[英]C strcmp - compare strings declared by char and char*
我正在嘗試使用以下代碼比較2個字符串:
char a[100] = "\0";
char* b[10];
for (int i = 0; i < 10; i++)
b[i] = "";
b[0] = "xy";
a[0] = 'x';
a[1] = 'y';
int c = strcmp(a, b[0]);
我認為a
和b[0]
都包含字符串"xy"
,因此我希望int c
等於0。但是存儲在int c
的結果是-858993460。 為什么會這樣? 為了避免該故障我該怎么辦? 非常感謝你。
更新:我發現我的計算機上有一些錯誤...
char a[3] = { NULL };
char d[3] = { NULL };
a[0] = 'x';
a[1] = 'y';
a[2] = '\0';
d[0] = 'x';
d[1] = 'y';
d[2] = '\0';
int c = strcmp(a, d);
即使使用此代碼,我也將int c
設為負值。 我不知道為什么會這樣。
這是未定義的行為,因為a
不為空終止。 C中的所有字符串必須為null終止才能在strcmp
。 strcmp
作用是循環這兩個字符串,直到兩個字符串之一以NULL終止(請參閱strcmp的實現以了解其工作原理)。 您可以看到,如果在任何地方都沒有出現'\\0'
,那么您會遇到問題。
閱讀為什么C中的字符串需要以null終止? 有關更多信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.