1樓:匿名使用者
char buff[5]=;這樣寫賦初值,雖說沒有給buff[1]-buff[4]賦值,但是預設是賦值0的,這樣寫沒問題。很多教材上都有的。
2樓:匿名使用者
char buff[10]=;
是可以把這個陣列的所有元素的賦值成0的。
不信你用下面的**測試一下。
#include
void main()
;int i;
for(i=0;i<=4;i++)
}因為有一條規則:在陣列定義的時候如果同時賦初值,未被賦值的元素都是0
3樓:匿名使用者
當buff作為字串使用的時候,第乙個字元被賦值為0(好像就是'\0'),這個字串就是乙個空串,也算是一種合理的初始化方式。
當然如果不是作為字串,而是作為陣列,就存在你說的問題了。
4樓:匿名使用者
需要注意的是:char buff[5]=;和char buff[5]=;是兩個完全不同的概念:
char buff[5]=;的賦的是乙個字串的結束符,而不是乙個字元'0';
char buff[5]=;才是給第乙個字元賦值為'0'。
大家喜歡用char buff[5]=;主要是想製造乙個空的字串,你除錯一下就知道了:
如果這樣寫:
#include
void main
;printf("%s",buff);
}是沒有任何輸出的,因為printf遇到的buff的第乙個字元就是個字串的結束符'\0'
而如果這樣寫:
#include
void main
;printf("%s",buff);
}才會看到輸出了乙個'0'
這才是你理解的給第乙個單元賦值為『0』。
char buff[5]=;是一種定義空字元陣列的嚴謹的寫法!
5樓:
一、全域性或靜態陣列
char gbuf[5] = ; // 第乙個元素gbuf[0] = 0,後續4個單元都會被置成0
二、函式區域性陣列
int func()
; // 第乙個元素gbuf[0] = 0,後續4個單元隨機值(編譯器相關)
}字串義'\0' == 0結束,字元陣列buf第乙個元素為結束符,代表buf儲存內容為空字串。
請教c語言字串和字元陣列的比較問題
6樓:yuanyuan源遠
利用fgets()取得乙個字串,直到讀取到"回車"符,而你得到的字串中含有「回車」(ascii:10),比你要比較的字串多乙個「回車」,所以strcmp()比較結果一直不為零。
如第一次while迴圈的結果:
7樓:it孤鶩
#include
#include
#include
int main(void)
fclose(fp);
system("pause");
return 0;
}上面的**更靠譜
你用過用fgets 那麼處理的字串後面一直要加'\0'
8樓:匿名使用者
fgets()到buff後,沒有\0結束標記
9樓:餘煙琦釵
c語言的字元陣列有兩種,比較方式也有所不同。
1字串。
c語言的字串是用字元陣列表示的。約定以'\0'(ascii碼0)作為結尾標記。
對於字串類的字元陣列,可以用string.h中的strcmp函式進行比較。
intstrcmp(char
*str1,
char
*str2);
其比較規則為:
a,從左向右依次比較每個元素;
b,如果出現str1的元素ascii碼比較大,則返回1;如果出現str2元素ascii碼比較大,則返回-1。如果相等,則繼續。
c,如果一直相等,直到遇到\0,這時檢查是否均為\0,如果均為\0,那麼返回0;
d,如果str1到\0,而str2沒到,返回-1;
否則返回1。
總結規則就是,如果str1比str2大,返回1;如果相等,返回0;如果str1小,返回-1。
2不帶\0結束的字元陣列。
對於此類陣列,沒有庫函式可供使用,只能自己寫函式進行比較。規則可以仿照strcmp的規則。
由於沒有\0作為結束,所以引數中必須傳入每個陣列的元素個數。
int char_array_cmp(char *s1, int l1, char *s2, int l2)
c語言陣列問題C語言中用陣列解約瑟夫問題
答案是a 前2個 就表示乙個 字元 接著是141共三個字元 接著的 141表示乙個字元 abc三個字元 t製表符,乙個字元 所以總共9個字元 include include void main for i 0 i 5 i 放入新陣列printf n for i 0 i 5 i 輸出新陣列 求平均63...
c語言定義全域性陣列問題,c語言陣列宣告問題
微控制器的led控制?陣列在子函式外作全域性變數是可以的,我就經常這麼定義。你的程式主函式呢?void main?問題不在子函式的陣列呼叫這。全域性陣列的定義語句一般是uchar code table 和一般的陣列定義不同,必須加code,你看是不是這個問題。詳細你可以找我私戳 在c語言中,全域性變...
c語言中關於字元陣列的長度問題,C語言中關於字元陣列的長度問題
r 這是個字元陣列,系統只為它分配了3個位元組的空間,但是strlen只有遇到 0 才會返回 於是它會向後繼續進行,直到有 0 這其實是越界 或許沒有,可能訪問的是q 10 了.你可以這樣 printf s n r 來檢視下列印的資訊。在我的上面 tc 是 3 3 3 9 哎。strlen 是在st...