用C语言扫描,我对返回值有点困惑。
在说明中,它说:
首先,如果输入结束 在第一次成功转换之前 之前匹配,我不确定他们是什么意思失败发生。怎么可能?
其次,我不确定读错误和匹配失败之间的区别?
答案 0 :(得分:3)
首先,如果在第一次成功转换之前或匹配失败发生之前达到输入结束,我不确定它们是什么意思。怎么可能?
想象一下,你正在尝试从文件中读取一个字符而你正处于文件的末尾。在任何成功的转换或匹配尝试发生之前,将到达输入结束。
其次,我不确定读错误和匹配失败之间的区别?
读取错误意味着您无法从FILE
读取数据。匹配失败意味着您能够读取数据但与预期不符(例如,阅读a
的{{1}}。)
答案 1 :(得分:1)
函数scanf()
返回成功读取和转换的字段数。但是,如果我输入(Windows)Ctrl-Z
作为输入,则表示EOF
。在Linux中,我认为可能是Ctrl-D
?因此,如果您没有输入有意义的值,scanf()
会以某种方式表示失败。
通常,您需要测试所需的输入数量,这也将涵盖EOF
情况。
if (1 != scanf("%d", &i))
printf ("No valid input\n");