gpt4 book ai didi

c++ - 为什么我的代码在第一个 if 语句处就中断了?

转载 作者:行者123 更新时间:2023-11-30 20:52:47 26 4
gpt4 key购买 nike

#include <stdio.h>
#include <ctype.h>
#include<string.h>

int main (void)
{
char *names;
int capacity = 0;
int size = 0;
char name[100];

printf ("Enter number 4 is you want to stop inputting names.\n");

while (1)
{
printf ("Input:\n");
fgets(name, sizeof(name),stdin);
printf ("%s", name);

if (strcmp(name, "end")!= 0)
{
printf ("hello");
}

if (strcmp (name, "end")== 0)
{
printf("bye ");
}
}
}

我试图继续循环以获取用户输入,并在用户输入某个字符或单词时跳出循环。但是当我输入“end”时,我期望输出是“bye”,但输出是“hello”。

最佳答案

问题很微妙。阅读documentation对于fgets。然后在调用 fgets 后在调试器中查看 name 的值。

fgets 在看到换行符时结束输入,它在结果中包含换行符。因此 name 以字符串 "end\n" 结尾;将其与 "end" 进行比较将会失败。

如果您要使用fgets,则必须允许换行符,并与“end\n”进行比较。

如果这是 C 代码,请使用 scanf。如果这是 C++ 代码,请使用带有流提取器的 std::cin

关于c++ - 为什么我的代码在第一个 if 语句处就中断了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57459131/

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