strcasecmp没有返回零
我想知道为什么strcasecmp()在我第一次使用时返回0,但在第二次使用时却没有返回 在本例中,我特别将“hello world”输入到标准输入中。 它不是打印0,而是打印0 10。我有以下代码strcasecmp没有返回零,c,C,我想知道为什么strcasecmp()在我第一次使用时返回0,但在第二次使用时却没有返回 在本例中,我特别将“hello world”输入到标准输入中。 它不是打印0,而是打印0 10。我有以下代码 #include "stdio.h" #include "string.h" int main(void) { char input[1000]; char *a; fgets(input, 1000, stdin); a = strtok(input, " "); pr
#include "stdio.h"
#include "string.h"
int main(void) {
char input[1000];
char *a;
fgets(input, 1000, stdin);
a = strtok(input, " ");
printf("%d\n",strcasecmp(a,"hello")); //returns 0
a = strtok(NULL, " ");
printf("%d\n",strcasecmp(a,"world")); //returns 10
return 0;
}
我做错了什么 在
hello world
之后输入的换行符是world
令牌的一部分,因为您使用空格作为令牌分隔符
如果您使用strtok(输入“\n”)代码>而不是strtok(输入“”)代码>程序将正常运行。事实上,您可能还想使用制表器作为标记分隔符
整个计划将是:
#include "stdio.h"
#include "string.h"
int main(void) {
char input[1000];
char *a;
fgets(input, 1000, stdin);
a = strtok(input, " \n\t");
if (a == NULL) return(-1);
printf("%d\n",strcasecmp(a,"hello"));
a = strtok(NULL, " \n\t");
if (a == NULL) return(-1);
printf("%d\n",strcasecmp(a,"world"));
return 0;
}
可能a
将有一个新行字符。调试器可以确认this@EdHeal我现在觉得自己很愚蠢。非常感谢!请记住,标准C中没有名为strcasecmp()
的函数。您的标记需要指定该函数(例如linux)。如果不是重复的,则与此相关。