gpt4 book ai didi

c - strcmp 不给 0,但两个参数相同

转载 作者:太空宇宙 更新时间:2023-11-04 07:21:14 25 4
gpt4 key购买 nike

我看不出我做错了什么。

void contains(NODE *head, char *user)
{
NODE *this = head;
while(this != NULL)
{
strcpy(temp, this->data);
// printf("%s\n",user);
// printf("%s\n",temp);
printf("%d test\n", strlen(user));
printf("%d node\n", strlen(temp));;
printf("%d\n",strcmp(temp, user));
if(strcmp(this->data, user) == 0){
printf("Found data %s\n", this->data);
}
this = this->next;
}
}

我在 main 中有这个(包含在最后一行调用):

NODE *head;
head = malloc(sizeof(NODE));

bool headNode = true;
char userID[1000];
char userIDsearch[180];
char test[180] = "monkey";
while((fgets(userID,1000,stdin) != NULL)){
// printf("%s\n", userID);
if(headNode == true)
{
head = insert(NULL, userID);
headNode = false; //this is used to insert data to my linked list for the first time
}
else
{
head = insert(head, userID);
}
}
contains(head, test);
如果我输入“猴子”,

strcmp 应该给出零,但它给出 1。此外,我在我比较的两个字符串上测试并使用了 strlen,对于一些原因 strlentemp (我的输入)提供了长度 + 1,但是 strlen 为 ~user 提供了正确的长度(我将其设置为字符串“猴子”)。

最佳答案

不要忘记 fgets()保留换行符,但您没有删除它,或者在 test 的末尾添加一个.

如果您使用如下语句打印输入,您会发现这一点:

printf("User ID <<%s>>\n", userID);

在循环中。 <<>>显示字符串的开始和结束位置,并显示嵌入的换行符。

关于c - strcmp 不给 0,但两个参数相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21542892/

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