gpt4 book ai didi

c - 如何在C中使用scanf获取数组中的整数输入?

转载 作者:行者123 更新时间:2023-12-03 22:58:24 24 4
gpt4 key购买 nike

我正在使用 scanf 获取多个整数输入并将其保存在一个数组中

while(scanf("%d",&array[i++])==1);

输入整数由空格分隔,例如:
12 345 132 123

我在另一篇文章中阅读了这个解决方案。

但问题是 while 循环没有终止。

这个说法有什么问题?

最佳答案

OP 正在使用 Enter 或 '\n'将输入的结尾和空格指示为数字分隔符。 scanf("%d",...不区分这些空白。在 OP 中 while()循环,scanf()消耗 '\n'等待额外的输入。

相反,阅读带有 fgets() 的一行然后使用 sscanf() , strtol()等进行处理。 ( strtol() 最好,但 OP 使用的是 scanf() 系列)

char buf[100];
if (fgets(buf, sizeof buf, stdin) != NULL) {
char *p = buf;
int n;
while (sscanf(p, "%d %n", &array[i], &n) == 1) {
; // do something with array[i]
i++; // Increment after success @BLUEPIXY
p += n;
}
if (*p != '\0') HandleLeftOverNonNumericInput();
}

关于c - 如何在C中使用scanf获取数组中的整数输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141168/

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