Return C 中 scanf 的值 EOF
Return value EOF of scanf in C
C语言的scanf,我对return值有点迷惑
说明书上写着:
如果在第一次成功转换或匹配失败发生之前到达输入末尾,- EOF 将被 returned。
- 如果发生读取错误,也会 return 编辑 EOF,在这种情况下会设置流的错误指示符。
首先,如果输入结束在第一次成功转换或before匹配失败。这怎么可能?
其次,我不清楚读取错误和匹配失败的区别?
First, I am not sure what they mean by if the end of input is reached before the first successful conversion or before a matching failure occurs. How is that possible?
假设您正在尝试从文件中读取一个字符,而您位于文件的末尾。在任何成功的转换或匹配尝试发生之前,将达到输入的结尾。
Second, I am not sure the difference between read error and matching failure?
读取错误意味着您无法从 FILE
读取数据。匹配失败意味着您能够读取数据,但它与预期的不匹配(例如,读取 a
对应 %d
。)
函数scanf()
returns成功读取和转换的字段数。但是,如果我输入 (Windows) Ctrl-Z
作为输入,则表示 EOF
。在Linux,我觉得可能是Ctrl-D
?因此,如果您没有输入有意义的值,scanf()
表示以某种方式失败。
通常,您测试所需的输入数量,这也将涵盖 EOF
情况。
if (1 != scanf("%d", &i))
printf ("No valid input\n");
C语言的scanf,我对return值有点迷惑
说明书上写着:
-
如果在第一次成功转换或匹配失败发生之前到达输入末尾,
- EOF 将被 returned。
- 如果发生读取错误,也会 return 编辑 EOF,在这种情况下会设置流的错误指示符。
首先,如果输入结束在第一次成功转换或before匹配失败。这怎么可能?
其次,我不清楚读取错误和匹配失败的区别?
First, I am not sure what they mean by if the end of input is reached before the first successful conversion or before a matching failure occurs. How is that possible?
假设您正在尝试从文件中读取一个字符,而您位于文件的末尾。在任何成功的转换或匹配尝试发生之前,将达到输入的结尾。
Second, I am not sure the difference between read error and matching failure?
读取错误意味着您无法从 FILE
读取数据。匹配失败意味着您能够读取数据,但它与预期的不匹配(例如,读取 a
对应 %d
。)
函数scanf()
returns成功读取和转换的字段数。但是,如果我输入 (Windows) Ctrl-Z
作为输入,则表示 EOF
。在Linux,我觉得可能是Ctrl-D
?因此,如果您没有输入有意义的值,scanf()
表示以某种方式失败。
通常,您测试所需的输入数量,这也将涵盖 EOF
情况。
if (1 != scanf("%d", &i))
printf ("No valid input\n");