日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言 字符串的读取

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 字符串的读取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
字符串
char str[] = {'V', 'V', 'c', 'a', 't', '\0'};
  • 字符串最適合放在char數組中存儲。
  • 在字符串字面量的末尾加上一個叫作 null 字符的值為0的字符。用八進制轉義字符表示 null 字符就是 ‘\0’ 。若用整數常量來表示就是0。
  • 末尾的 null 字符 ‘\0’ 是字符串結束的 “標志”。

注:

  • 由 5 個字符組成的字符串字面量 “VVcat” 實際上占用了 6個字符的內存空間。
  • 字符串字面量的中間也可以有 null 字符。不過應注意區分。字符串字面量 “ABC” 是字符串,而字符串字面量 “VV\0cat” 不是字符串。
#include <stdio.h>int main(void){printf("sizeof(\"vvcat\") = %u\n", (unsigned)sizeof("vvcat"));printf("sizeof(\"vv\0cat\") = %u\n", (unsigned)sizeof("vv\0cat")); }

運行結果:

字符數組的初始化
  • 以下3種形式都可以實現字符數組的初始化賦值。
  • 1. char str[] = {'V', 'V', 'c', 'a', 't', '\0'};2. char str[] = "VVcat";3. char str[] = {"VVcat"};

    因為初始值的個數決定了數組元素的個數,所以元素個數可以省略。

  • 除了初始化賦值的時候,不能將數組的初始值或字符串直接賦予數組變量。
    以下3種是錯誤的賦值方式:
  • char str[6]; 1. str = {'V', 'V', 'c', 'a', 't', '\0'}; 2. str = "VVcat"; 3. str = {"VVcat"};
  • 若像下面這樣聲明,末尾就不會加上 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’ 放在數組的中間某個位置會出現以下結果:

    #include <stdio.h>int main(void){char str[6];str[0] = 'V';str[1] = 'V';str[2] = '\0'; // 將 '\0' 放在 下標為3的位置str[3] = 'C';str[4] = 'A';str[5] = 'T';printf("字符串 str 為 \"%s\"。 \n", str);return 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语言 字符串的读取的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。