C中的字符串比较函数

时间:2012-06-07 21:09:07

标签: c string

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

为什么会这样?关于strcmp我不明白的是什么?为什么12而不是任何其他数字?

2 个答案:

答案 0 :(得分:5)

要回答你的问题,

strcmp("zail", "nail")

评估为12,因为它从“zail”中的'z'减去“nail”中的'n','z' - 'n'= 12。

答案 1 :(得分:1)

你得到的是随机垃圾,因为你没有正确初始化数组。

而不是

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

尝试

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