關於C語言字元陣列的賦值最後自動新增 0 問題

2021-03-19 18:37:32 字數 2874 閱讀 5435

1樓:

#include

void main()

;printf("%s\n",c);

c[0]='a'; // 僅對bai第一位元du素賦zhi值,它並不影響dao

其後面的版字元權

printf("%s\n",c);

c[1]='b';  // 同理

printf("%s\n",c);}

2樓:w天使de翅膀

可以正常讀出來的,\0只是一個相當於識別符號的東西,用來判斷已經到達字串的末尾

3樓:匿名使用者

c[5]只有5個空間無法完全容納字串"hello",因為這個字串需要佔用6個字元位置。

所謂自動加'\0'的問題是內:你寫在雙

容引號中的,編譯程式會認為是字串,會自動為你新增上一個字串結尾符號0,而不是執行時新增的。

如果你用debug方式執行程式,除錯環境自動會把你開設的char a[5];進行初始化0的工作,這時你再將第1位初始化時,後面的0仍存在就好象字串結尾已經存在了。如果非debug執行則沒有這個初始化工作。

如果你用字元方式初始化應當寫:char c[6]=;

4樓:匿名使用者

char c[5] = ; 有兩個問題

(1)語法不對,應該是 char c[5]="hello"

(2)有錯誤, char c[5]="hello",字串終止符溢位了

2.  但是我如果定義char a[5];給前一回位賦初值,答

則第二到第五位會自動賦值'\0'

// 沒錯,但注意是陣列第1到第4項自動賦值為0但後面我又給第三位到第五位賦值了,這個陣列是不是就不能正常讀出了// 需要看你賦什麼值,如果是非零值、並且你把陣列a當字串使用,則結果無法預料(無法確定終止符);如果你把陣列a只是當陣列使用,則不會有讀取問題

5樓:阿炳仰

可以正常讀出 就是隻能讀出 第一位

c語言 字串 程式設計 輸入字元結束時賦值'\0'

6樓:匿名使用者

while((s[i]=getchar())!='\n')i++;   //這兩句是完成資料輸入,每輸入一個,i就會加1,直到遇到輸入回車符

s[i]='\0'; //

一、這句

回不是while迴圈的內容答,

二、此功能為:將回車符變成字串結束符(只是針對陣列的某一位進行操作,而不是改變整個陣列內容),你這個**中可見,回車符不是你想要的資料,只是輸入結束的一個判斷值。

7樓:匿名使用者

這是因bai為字串是以『

du\0'做為結束標誌的zhi。在記憶體中,比如字元dao串,「abc",實際上版

是四個位元組的空間

權abc'\0'。

在你的程式中:

while((s[i]=getchar())!='\n')i++;

s[i]='\0';

前面的while只是得到了字串的字元,而沒有結束標誌。

如果沒有最後一句s[i]='\0';

你的字元就不能正確結束。如果列印,可能是一大串的亂碼。只看你字串儲存空間後面的是什麼值。

8樓:瓜娃子

表示bai這個之後的

字元都不du是這個字串的

zhi。

也就是說,整個字串dao內容只是從開頭到'\0'

比如專:char s[10]="123";

printf("%s",s);//是123s[1]='\0';

printf("%s",s);//是1

另外屬,如果'\0'之後還有其他字元,則全部忽略,這是一種策略,c風格字串就是這樣。

如果你忘了加(一般系統幫你加),程式會崩潰

9樓:

『\0'是字串結束符,字串處理

函式遇到該標誌時,就會停止處理。

比如內在這段**中,容輸入abcda回車,s[5] = '\0'; 字元處理函式strlen(s) == 5,如果不置該值,這類函式就會異常,嚴重時,會系統崩潰。

c語言中字串,為什麼最後要加個『\0' ?

10樓:匿名使用者

'\0'一般放在字串的結束處,表示字串的結束,其是ascii值為0的字元的轉義。

在標頭檔案#include 中包含的一些字串處理函式等中,一般處理字串時,都是一'\0'作為字串的結束,如果一個字串中沒有'\0'這個結束字元,那麼這些函式將不能確定字串的結束位置在哪兒,從而引起一些不必要的錯誤。

11樓:匿名使用者

\0'在c語言中代表著字串的結束

在你不輸入'\0'的時候 字串不知道已經讀完了 還有繼續向後讀 讀一個位元組長度是?兩個位元組長度

就是燙 這是ascii值決定的 漢子是兩個位元組就不多說了 '\0'的ascii值為(0x)00有時候如果未定義可能會出現一堆燙知道出現預設的00(也就是'\0')才會停止。

12樓:匿名使用者

因為c語言中沒有字串這種資料型別,只有char字元型別,在c語言中所謂的字串其實是char陣列,陣列最後一個元素加上「\0",表示字串結束,這是一種字串的表達方式。

13樓:匿名使用者

表示字串結束,在輸出的時候輸出到這裡為止,你可以試一下在字串中間加入\0 再輸出,就只會輸出\0前面的內容。

14樓:匿名使用者

那個設計c語言編譯器的人強制規範這樣的

15樓:匿名使用者

字串結束符。 表示字串結束。 跟'\n'表示換行,差不多。

cvi類似c語言字串陣列賦值問題

1 把字元陣列 0x01,0x34,0x0e,0x0a,0x00,0xab,0xec 中的十六進位制資料轉為字串 字串中的字元依次為 0 1 3 4 0 e 0 a 0 0 a b e c 0 2 例子 char a 7 char b 15 char t int i for i 0 i 7 i 我猜...

C語言字元陣列程式設計題,c語言字元陣列和字串程式設計題 求解

思路 按題意,用指標遍歷字串st,使用標識變數flag首次遇到字母置1並計數,遇到空格時flag重置0。注意 本程式不考慮夾雜非字母的情況,請規範輸入。比如 i am a stu dent stu dent將作為一個單詞識別。下面是 include int getwordnum char st ch...

C語言 給陣列中的元素賦值

好像沒有什麼直接的辦法,只有使用迴圈語句來判斷最後一個出現的非0值為最後一個元素,也就是說如果你初始化為1,2,3,0,4,5這樣有辦法判斷,但若初始化為1,2,0,3,0,0就沒辦法判斷了,只能判斷到3,因為3是最後一個非0值。因為系統預設會把其他部分都初始化為0,所以沒有辦法判斷 沒有賦值的元素...