[英]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.