2012-06-07 118 views
-5
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而不是其他號碼?

+0

I你會驚奇地發現任何東西都可讀。你的數組是如何初始化和聲明的? –

回答

1

因爲您沒有正確初始化您的陣列,所以會發生隨機垃圾。

而不是

map[0][4]='\0'; 
city1[0][4]='\0'; 

嘗試

memset(map[0], '\0', sizeof(map[0])); 
memset(city1[0], '\0', sizeof(city1[0])); 
+0

否 - 至少使用sizeof()以便它適用於任何大小的「char」, –

+0

@MichaelDorgan - 足夠公平。 – egrunin

5

要回答你的問題,

strcmp("zail", "nail") 

正在評估到12,因爲它是從減去 「釘子」 的 'N' 'z'in'zail','z' - 'n'= 12.