簡體   English   中英

如何在strcmp()函數中使用字符數組

[英]how to use character arrays in strcmp() functions

當我將任何字符輸入到字符數組時,我初始化了一個大小為4的字符數組

char a[4];
a[1]='z';
printf("The character array is %s\n", a);

輸出顯示給我

字符數組是

但是后來我改變了一點

char a[4];
a[1]='z';
printf("The first character of the array is %s\n", a[1]);

輸出顯示給我

數組的第一個字符是z

這是為什么 ? 我如何使用字符數組,例如是否希望使用strcmp()函數進行比較。 請幫我....

在第一段代碼中,您僅設置了數組的一個元素。 其他三個元素未初始化。 因此,當您調用printf並傳入a它將讀取那些未初始化的字節。 這樣做會調用未定義的行為 ,在這種情況下,這表明沒有打印任何內容。

在這種特殊情況下可能發生的情況是,數組的第一個元素(即索引為0的元素)可能為0。此值用於終止字符串,因此a被視為空字符串。

也:

數組的第一個字符是z

不它不是。 C中的數組從索引0開始,而不是索引1。

如果要將字符串復制到數組中,請使用strcpy

strcpy(a, "z");

在此代碼段中

char a[4];
a[0]='z';
a[1]='y';
printf("The character array is %s\n", a);

該數組不包含字符串(以零字符結尾的字符序列)。 但是,您嘗試使用轉換說明符%s將其輸出為字符串。

相反,你應該寫

printf("The character array is %*.*s\n", 2, 2, a);

在此代碼段中

char a[4];
a[0]='z';
a[1]='y';
printf("The first character of the array is %c\n", a[0]);
printf("The second character of the array is %c\n", a[1]);

同樣,數組不包含字符串。 但是,您將輸出單獨的字符。 因此沒有問題。

如果要將字符串存儲在數組中,則應在字符串后附加零個字符。 例如

char a[4];
a[0]='z';
a[1]='y';
a[2] = '\0';
printf("The character array is %s\n", a);

標准的C字符串函數strcmp處理字符串。 因此,要與此函數一起使用的數組應包含字符串。

否則,您可以使用另一個標准函數memcmp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM