簡體   English   中英

C strcmp-比較由char和char *聲明的字符串

[英]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]);

我認為ab[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.

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