【发布时间】:2015-12-12 14:52:14
【问题描述】:
我的 fscanf 函数应该从文件中获取 3 个数字并将它们存储在 charr 数组中,然后我使用 atoi 和 atof 将其转换为整数和浮点数。
我将如何检查是否:
- 它真的得到了所有 3 个,而不仅仅是 2 个,例如
- 它实际上是一个数字,而不是像 7jho 或 ad841 之类的东西
在第二种情况下,我想只测试字符串到 int/float 的转换是否成功就足够了
if(atoi(numberchar) == 0){printf("sorry error");}
但是,零是我的数字(浮点数和整数)的有效值,所以我遇到了问题。
我还注意到,例如输入 45kl,atoi/atof 函数将其转换为 45。所以这里唯一需要注意的是输入不以数字开头的情况?
为此,我可以写一个条件,如果数组的第一个元素不为零,但 atoi/atof 函数无论如何都失败了(返回零),那么输入的开头可能有一个非数字字符。
对吗?
【问题讨论】:
-
一个好的开始可能是看看
fscanfdescription。 -
我做到了,但我忘了提到该函数返回 1,即使它成功扫描了所有 3 个数字。我知道确实如此,因为我后来在项目中与他们合作。
-
输入文件来自哪里,您使用的是什么操作系统?
-
该文件是一个 .txt 文件,我用 fopen 打开它以供阅读。它与我的程序位于同一目录中。我在窗户上。
-
请把代码sn-p贴出来好吗?
标签: c text-files scanf