strcmp()不适用于char * array和char const比较

时间:2018-06-22 21:11:03

标签: c arrays string pointers

我遇到以下代码的问题。我想比较输入的单词。对于相同的字符字符串,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);
}

1 个答案:

答案 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长度数组会发生什么情况。