0 的数字。 #include int main(void) { char *s-6ren">
gpt4 book ai didi

c - strncmp 在相等的字符串上不返回 0

转载 作者:行者123 更新时间:2023-11-30 21:19:17 25 4
gpt4 key购买 nike

如果输入是 end,strncmp("end",input,3) == 0 不应该返回 0 吗?但它返回一个 > 0 的数字。

#include <stdio.h>

int main(void) {
char *strArray[100];
int strLengths[100];
char input[100];
int flag = 0;
do {
scanf("%c",&input);
if(strncmp("end",input,3) == 0) {
printf("end\n");
}
printf("%d\n",strncmp("end",input,3));
} while(flag !=0);
return 0;
}

最佳答案

这个

scanf("%c",&input);

只读取一个char - 也许吧。这是错误的 - 请注意从编译器收到的错误和警告。

格式说明符不正确 - %c 表示 scanf() 将尝试读取 char,但您传递的是char[100] 数组的地址。这是未定义的行为,所以任何事情都可能发生。

您也没有检查返回值来查看 scanf() 是否有效,因此您并不真正知道 input 中的内容。

关于c - strncmp 在相等的字符串上不返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com