map[0][4]='\0';
city1[0][4]='\0';
strcpy(map[0],city1[0]);
map[0][0]='z';
printf("%s",map[0]);
printf("%s",city1[0]);
printf("%d \n",strcmp(map[0],city1[0]));
這個函數的輸出zail nail 12
字符串比較功能用C
爲什麼會這樣?我不明白strcmp
?爲什麼12而不是其他號碼?
map[0][4]='\0';
city1[0][4]='\0';
strcpy(map[0],city1[0]);
map[0][0]='z';
printf("%s",map[0]);
printf("%s",city1[0]);
printf("%d \n",strcmp(map[0],city1[0]));
這個函數的輸出zail nail 12
字符串比較功能用C
爲什麼會這樣?我不明白strcmp
?爲什麼12而不是其他號碼?
因爲您沒有正確初始化您的陣列,所以會發生隨機垃圾。
而不是
map[0][4]='\0';
city1[0][4]='\0';
嘗試
memset(map[0], '\0', sizeof(map[0]));
memset(city1[0], '\0', sizeof(city1[0]));
否 - 至少使用sizeof()以便它適用於任何大小的「char」, –
@MichaelDorgan - 足夠公平。 – egrunin
要回答你的問題,
strcmp("zail", "nail")
正在評估到12,因爲它是從減去 「釘子」 的 'N' 'z'in'zail','z' - 'n'= 12.
I你會驚奇地發現任何東西都可讀。你的數組是如何初始化和聲明的? –