我遇到以下代码的问题。我想比较输入的单词。对于相同的字符字符串,strcmp不会返回0。这是一个非常简单的问题,但是我无法弄清楚哪里出了问题。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
char message[255];
fgets(message,254,stdin);
char *command[2];
char *p;
int i=0;
for(p=strtok(message," ");p!=NULL;p=strtok(NULL," "))
{
command[i]=p;
fprintf(stderr,"%s\n",command[i]);
}
int dif=strcmp(command[0],"get");
fprintf(stderr,"dif is:%d\n",dif);
}
答案 0 :(得分:1)
您永远不会在i
循环中增加for
。因此,指向您消息中的每个单词的指针将被写入command[0]
。
尝试一下:
for(p=strtok(message," ");p!=NULL;p=strtok(NULL," "))
{
command[i]=p;
fprintf(stderr, "command[%d]==%s\n", i, command[i]);
i += 1;
}
但是请注意,command
数组的固定大小(且相对较小)是一个等待发生的错误。考虑如果用户输入3个或更多单词,那么2长度数组会发生什么情况。