gpt4 book ai didi

C strcmp() 将 String 与 char 指针进行比较时返回正值

转载 作者:行者123 更新时间:2023-11-30 15:04:48 24 4
gpt4 key购买 nike

我在 C 中有以下代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

char *buf;

buf = malloc(sizeof(char) * 512);


while(strcmp(buf, "Exit!") != 0 )
{
printf("Enter something:");
fgets(buf, sizeof(char) * 512, stdin);
printf("You entered %s\n", buf);

printf("%d\n", strcmp(buf, "Exit!"));

}

}

我想要的行为是 while当用户输入指定的string时循环终止。据我了解,我可以使用 char代表 string 的指针在 C 中。我使用 fgets() 存储用户输入并使用 strcmp() 进行比较功能。我添加了一个调试语句,该语句打印出此比较的结果,当我输入“退出!”时,它返回一个正整数。这应该终止 while 循环。

有人可以解释一下我缺少什么吗?我相信这与换行符或 C 字符串终止符 \0 有关。 。当用户输入“退出”时,如何让 while 循环终止?

最佳答案

这是因为fgets保留了从键盘输入的换行符,或者在文本文件中标记了行尾。

删除它的一种简单方法如下:

#include <string.h>

//...

buf [ strcspn(buf, "\r\n") ] = 0; // remove trailing newline etc

关于C strcmp() 将 String 与 char 指针进行比较时返回正值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40147392/

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