strncmp 在相等的字符串上不 return 0
strncmp doesn't return 0 on equal strings
如果输入结束,strncmp("end",input,3) == 0
return 不应该是 0 吗?它 return 是一个 > 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]
数组的地址。这是未定义的行为,所以任何事情都可能发生。
您也没有检查 return 值以查看 scanf()
是否有效,因此您并不真正知道 input
.
中的内容
#include <stdio.h>
int main(void) {
char *strArray[100];
int strLengths[100];
char input[100];
int flag = 0;
do {
scanf("%s",input); //%c is for a single char and %s is for strings.
if(strncmp("end",input,3) == 0) {
printf("end\n");
}
printf("%d\n",strncmp("end",input,3));
} while(flag !=0);
return 0;
}
下次打印输入,然后再继续确认你做的是正确的。
在您的情况下,与 strncmp("end",input,3) == 0
比较的字符串永远不会匹配,因为 input
将只包含一个字符。
调用scanf("%c",&input);
将只读取输入的第一个字符,并将其存储在input
中
如果输入结束,strncmp("end",input,3) == 0
return 不应该是 0 吗?它 return 是一个 > 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]
数组的地址。这是未定义的行为,所以任何事情都可能发生。
您也没有检查 return 值以查看 scanf()
是否有效,因此您并不真正知道 input
.
#include <stdio.h>
int main(void) {
char *strArray[100];
int strLengths[100];
char input[100];
int flag = 0;
do {
scanf("%s",input); //%c is for a single char and %s is for strings.
if(strncmp("end",input,3) == 0) {
printf("end\n");
}
printf("%d\n",strncmp("end",input,3));
} while(flag !=0);
return 0;
}
下次打印输入,然后再继续确认你做的是正确的。
在您的情况下,与 strncmp("end",input,3) == 0
比较的字符串永远不会匹配,因为 input
将只包含一个字符。
调用scanf("%c",&input);
将只读取输入的第一个字符,并将其存储在input