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,所以沒有辦法判斷 沒有賦值的元素...