gpt4 book ai didi

c - scanf()如何返回EOF?

转载 作者:行者123 更新时间:2023-11-30 19:55:46 24 4
gpt4 key购买 nike

如果以下函数返回一个整数:

int scanf( const char *format, ... );

scanf()怎么样?返回EOF

我尝试过以下两个版本:

//为什么会这样?

int num;
int flag = scanf("%d", &num);

while(flag != EOF) {
flag = scanf("%d", &num);
}

//与此版本相比?

int num;
scanf("%d", &num);

while(num != EOF) {
scanf("%d", &num);
}

换句话说,我很困惑为什么 num变量不会变成EOF之后scanf("%d", &num);但标志确实变成了 EOF之后int flag = scanf("%d", &num);

最佳答案

获取 EOF 值的不是 scanf 调用的参数。如果出现错误或遇到文件结尾,该函数将返回 EOF。

请注意,scanf 的参数可以有多种类型,例如指向字符数组第一个字符的指针。

所以第二个代码片段没有意义。

来自C标准中的函数描述

3 The scanf function returns the value of the macro EOF if an input failure occurs before the first conversion (if any) has completed. Otherwise, the scanf function returns the number of input items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure.

关于c - scanf()如何返回EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922716/

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