gpt4 book ai didi

C:从用户读取成对的整数直到换行(scanf、sscanf、fgets 和 friend )

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

我正在尝试从标准输入读取未知对,直到输入新行。

输入示例:

Enter something:

5

Enter pairs:

1 3 4 2 5 2 5 4

这样做的最佳方法是什么?我尝试了几种方法,包括 fgets 和 sscanf - 但无法获得预期的结果。

这是我尝试过的方法,但我一直缺少\n:

方法#1:

while (1)
{
scanf("%d %d", &a, &b);

// do something with a,b

if (getchar() == '\n')
break;
}

方法#2:

while (scanf("%d %d", &a, &b) == 2)
{
// do something with a,b

if (getchar() == '\n')
break;
}

我一直陷入无限循环 - 我做错了什么?

最佳答案

我认为处理行尾空格的最简单方法(这可能会导致您的问题)是提前读取该行并使用 sscanf 对其进行解析。它可能看起来大致像这样:

#include <stdio.h>

int main() {
char line[1024];
char const *p;
int x, y;
int n;

fgets(line, 1024, stdin);

for(p = line; sscanf(p, " %d %d%n", &x, &y, &n) == 2; p += n) {
printf("%d %d %d\n", x, y, n); // to show you what happens
}

return 0;
}

这里的 %n 使 sscanf 告诉您到目前为止已处理的字符数,我们使用该数字在每个迭代。

这通过忽略最后一个数字来处理一行中数量不均匀的数字,这可能是也可能不是您想要发生的情况。

关于C:从用户读取成对的整数直到换行(scanf、sscanf、fgets 和 friend ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28009817/

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