shi*_*i93 1 c string comparison string-comparison strcmp
我在C中编写了以下代码.
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[4] = "abcd";
char str2[4] = "abcd";
printf("%d\n",strcmp(str1,str2));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期望返回值为0(因为我被教导strcmp函数为相等的字符串返回0).但它打印1!
Success time: 0 memory: 2248 signal:0
1
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?还是我错过了什么?
因为你的阵列不够长.您没有考虑字符串的零终结符.你的字符串需要5个字符,字符串本身需要4个字符,零终止符需要1个字符.
写:
char str1[5] = "abcd";
char str2[5] = "abcd";
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我想知道你的编译器为什么不发出警告或者它发出警告?