gpt4 book ai didi

c - Scanf 更多值 C

转载 作者:行者123 更新时间:2023-11-30 15:37:03 24 4
gpt4 key购买 nike

我需要有关 C 中简短代码的帮助。我必须读取输入行上用空格分隔的 float ,并且输入以 float 0 或 EOF 结束。

如果我不知道输入中有多少数字,或者它是如何工作的,并且如果我只读取数字而不是字符,则询问 EOF,该怎么做?

感谢您的回复。

一行输入示例:

12 11 10 45 50 12 EOF
12 10 11 45 0

int main(void)
{
float num;
float sum = 0;

do{
scanf("%f", num);
sum += num;
} while(EOF || num == 0);
return 0;
}

最佳答案

来自 scanf 的手册页 -

scanf returns the number of items successfully matched and assigned which can be fewer than provided for, or even zero in the event of an early matching failure. The value EOF is returned if the end of input is reached before either the first successful conversion or a matching failure occurs.

这意味着 scanf 仅当调用时遇到 EOF 作为第一个输入时才会返回 EOF,因为 EOF 之前必须有换行符 '\n' 否则它将无法工作(取决于操作系统) 。您还必须考虑 scanf 可能遇到的匹配失败。

#include <stdio.h>

int main(void) {
float num;
float sum = 0;
int val;

while((val = scanf("%f", &num)) != EOF && val == 1) {
sum += num;
}

if(val == 0) {
printf("matching failure. input is not a float.\n");
}
else {
printf("end of input.\n");
}

return 0;
}

关于c - Scanf 更多值 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361004/

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