c語言關於陣列賦初值的問題,C語言關於陣列賦初值的問題char buff

2021-08-19 16:31:34 字數 2340 閱讀 1259

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...