gpt4 book ai didi

c - 如果每次都没有,如何使用 scanf 读取 c 中的输入。的投入正在发生变化

转载 作者:行者123 更新时间:2023-11-30 21:20:46 25 4
gpt4 key购买 nike

我必须阅读不同的编号。在一种情况下读取两个整数,在另一种情况下读取 4 个整数,等等的输入的数量。

下面是我想要实现的输入类型。此示例有 6 行。

示例输入

1 1 1 2
1 1 2 5
1 2 3 4
2 3
2 4
1 5 5 4

我的代码

#include <stdio.h>

typedef long long int LLI;

int main(void)
{


LLI n,q,i,j,w,x,y,z,t;
scanf("%lld %lld",&n,&q);
LLI d[n],s[n];
for(i=0;i<q;i++)
{
// I don't know how to do this? The code below is what I have tried:
scanf("%lld %lld %lld %lld",&w,&x,&y,&z);
printf("%lld %lld %lld %lld \n",w,x,y,z);
}
return 0;
}

示例输入

5 14

1 1 1 2

1 1 2 5

1 2 3 4

1 2 4 7

2 3

2 4

1 5 5 4

2 5

2 6

1 7 5 8

2 7

2 8

2 9

2 10

最佳答案

您使用 fgets() (或者 getline() 如果您的代码仅在 Linux、BSD 和 Mac OS X 等 POSIXy 系统上运行)来读取每一行。第一行将包含包含数据的行数。

要处理每一行(具有不同数量的值),您可以使用 sscanf()使用 %n 来确定消耗的字符数,strtol() , strtoul() ,或strtod() 。在所有情况下,您都尝试转换一个值,跟踪成功转换消耗原始字符串的量,相应地提前下一次转换的字符串的开头。重复直到转换失败。 (然后您可以检查转换是否由于字符串结尾而失败,或者该行是否包含非值数据,即垃圾或注释。)

关于c - 如果每次都没有,如何使用 scanf 读取 c 中的输入。的投入正在发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34740030/

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