C语言 字符串的读取
生活随笔
收集整理的這篇文章主要介紹了
C语言 字符串的读取
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字符串
char str[] = {'V', 'V', 'c', 'a', 't', '\0'};- 字符串最適合放在char數組中存儲。
- 在字符串字面量的末尾加上一個叫作 null 字符的值為0的字符。用八進制轉義字符表示 null 字符就是 ‘\0’ 。若用整數常量來表示就是0。
- 末尾的 null 字符 ‘\0’ 是字符串結束的 “標志”。
注:
- 由 5 個字符組成的字符串字面量 “VVcat” 實際上占用了 6個字符的內存空間。
- 字符串字面量的中間也可以有 null 字符。不過應注意區分。字符串字面量 “ABC” 是字符串,而字符串字面量 “VV\0cat” 不是字符串。
運行結果:
字符數組的初始化
因為初始值的個數決定了數組元素的個數,所以元素個數可以省略。
以下3種是錯誤的賦值方式:
若像下面這樣聲明,末尾就不會加上 null 字符。
char str[] = {‘V’, ‘V’, ‘c’, ‘a’, ‘t’};
這樣的聲明的變量不會被當做字符串,我們把它當做 5 個字符的集合,也就是“普通的”數組。
正確的賦值方式:
#include <stdio.h>int main(void){char str[6];str[0] = 'V';str[1] = 'V';str[2] = 'C';str[3] = 'A';str[4] = 'T';str[5] = '\0';printf("字符串 str 為 \"%s\"。 \n", str);return 0; }運行結果:
數據雖然長度定義為6,但是除了null字符之外,剩下只可存儲5個字符。
注:
如果將 ‘\0’ 放在數組的中間某個位置會出現以下結果:
運行結果:
null 字符 ‘\0’ 是字符串結束的 “標志”。
空字符串
char name[] = ""; char s[] = {'\0'};一個字符也沒有的字符串,稱為空字符串。因為即使沒有字符,也需要表示結束的null字符,所以在內存空間上只有一個null字符。
#include <stdio.h>int main(void){char name[] = ""; // 對數組初始化char s[] = {'\0'};printf("(unsigned)sizeof(name) = %u\n", (unsigned)sizeof(name));printf("(unsigned)sizeof(s) = %u\n", (unsigned)sizeof(s));printf("請輸入名字:");scanf("%s", name); // 不需要加上 &printf("早上好, %s !!\n", name);printf("中午好, %3s !!\n", name);printf("晚上好, %.3s !!\n", name);printf("夜晚了, %8s !!\n", name);printf("該睡了, %-8s !!\n", name);return 0; }運行結果:
為了從標準輸入讀取字符串,需要把scanf函數的轉換說明設為 %s ,還必須傳入數組name。
另外,scanf函數在將從鍵盤讀取的字符串存儲到數組中時,會在末尾加上null字符。
總結:
- 1.輸出最小寬度
- %3s 表示至少輸出 3位 實際位數。如果省略或實際輸出的字符串位數超過指定值,則按實際位數輸出。
- 如果設置了 - 標志,則表示左對齊,否則表示右對齊(空白部分填補空格)。
- 2.精度
- %.3s 指定顯示位數的上限為 3(即不可能顯示超過指定位數的字符,超過則截去)。
- 3.轉換說明符
- s 表示輸出字符串。即輸出數組的字符,直到null字符的前一個字符為止。如果沒有指定精度或精度大于數據長度,則數組中必須含有null字符。
總結
以上是生活随笔為你收集整理的C语言 字符串的读取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言 计算一串字符中出现的数字字符数
- 下一篇: C语言 读取字符串数组中的字符串并获取字