gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:47:43 25 4
gpt4 key购买 nike

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

最佳答案

您永远不会在 for 循环中递增 i。因此,指向消息中每个单词的指针都会写入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 长度数组会发生什么情况。

关于c - strcmp() 不适用于 char *array 和 char const 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50995658/

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