我的输入如下。
3 8 9 3
4 2 4 0 3
5 1 5 9 3 1
0
1 5
如您所见,每行的第一个数字表示该行中剩余多少输入。
如何通过scanf获取所有输入?
或者,请让我知道新的消息。
最佳答案
如注释中所述,scanf()
的问题(除其他外)是其处理换行符的方式。但是,sscanf()
函数(从字符串读取)没有此问题!因此,根据您要实现的目标,也许类似于以下代码将有所帮助:
#include <stdio.h>
int main()
{
int a[5], n = 0, given;
char buffer[200];
while (n >= 0) {
printf("\nEnter n and a list of numbers: ");
fgets(buffer, 200, stdin);
printf("Input was: %s", buffer);
n = -1;
given = sscanf(buffer, "%d %d %d %d %d %d", &n, &a[0], &a[1], &a[2], &a[3], &a[4]);
if ((given < 1) || (given != n + 1)) printf("Invalid input!\n");
}
return 0;
}
我并不是说这是一个理想的解决方案,甚至不是您可以使用它,但是它可能会为您提供下一步的线索。
让我知道您如何找到它。
关于c - 具有可变参数的scanf(C lang),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58048658/