typedef struct{
char ch[MAXLEN];//靜態陣列實作(定長順序存盤)
int length;
}SString;
SString sub;
sub.ch[0]='0';
sub.ch[1]='y';
sub.ch[2]='e';
sub.ch[3]='s';
sub.ch[4]='\0';
1.printf("%s",sub.ch);輸出:0yes
2.如果,不對sub.ch[0]賦值,printf("%s",sub.ch);輸出為空。
3.如果,沒有sub.ch[4]='\0',printf("%s",sub.ch);輸出0yes+亂碼,直到發現0為止。
應為%s表示輸出字串,以一個char型別變數開頭,以‘\0’結尾。
uj5u.com熱心網友回復:
%s是輸出字串,輸出的方式是一個字符一個字符輸出,直到遇到'\0'停止輸出。如果不對ch[0]賦值,那么要看ch[0]是什么,如果是'\0'那么自然什么都不輸出。如果沒有'\0'作為結尾,那么會繼續向后尋找直到找到'\0',這樣會出現越界訪問,結果是未定義的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/97390.html
標籤:C語言
