gpt4 book ai didi

c - 在循环中读取多个用户输入字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:29 24 4
gpt4 key购买 nike


我目前正在尝试解决 CodeChef 的问题,但我在循环内使用 fgets() 时遇到了麻烦。

第一个输入 (T) 将是一个包含用户输入数量的正整数。
然后以换行符分隔,用户在任何情况下都将输入长度小于10的字符串。

所以,我试过这个:

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

#define SIZE 10

int main()
{
int T;
int diffX, diffY;
char s[SIZE];

scanf("%d", &T);

while (T--){
fgets(s, SIZE, stdin);
printf("%s\n", s);
}
return 0;
}

但是,当我尝试使用以下输入测试代码时:

3
Hello
Hi
What

我只能输入直到“Hi”然后程序成功退出(返回 0)。

为什么会这样,我该如何解决?

提前谢谢你,
公园。

最佳答案

fgets() 使用第一次调用 scanf() 后留下的换行符。因此,它消耗了 3 行,但第一行看起来像您拥有的 fgets() 循环的空行。

您可以通过使用 fgets() 获取第一行来修复此问题,并使用 sscanf() 将字符串解析为数字。

fgets(s, SIZE, stdin);
sscanf(s, "%d", &T);
/* ... */

关于c - 在循环中读取多个用户输入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18322906/

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