我只是想检查一个变量中存在的值是否为整数。
我的程序从" myfile.txt"中读取两个值。当且仅当它们是整数时才执行加法,否则它返回"无效输出"。我已成功读取" myfile.txt"的值。但我无法检查这两个值是否为整数。如何执行此测试?
#include <stdio.h>
#include <conio.h>
int main()
{
FILE *fp;
int i, mkji, num, num1, num2;
int s = 0;
int a[2];
char term, term2;
clrscr();
fp = fopen("myfile.txt", "r+");
if (fp != 0)
{
for(i = 0; i < 2; i++)
{
fscanf(fp, "%d", &a[i]);
}
for(i = 0; i < 2; i++)
{
printf("%d\n", a[i]);
}
num = a[0];
num1 = a[1];
num2 = num + num1;
printf("%d", num2);
mkji = fclose(fp);
}
else
printf("FILE CANNOT BE OPEN");
getch();
return 0;
}
答案 0 :(得分:1)
检查fscanf
的返回值。 fscanf
返回成功扫描的项目数,如果出现IO错误,则返回-1。因此,如果数字格式不正确,fscanf("%d",&a[i]);
应返回0.
答案 1 :(得分:0)
将文件作为ASCII字符读取并检查其ASCII代码。如果ASCII位于数字0 number has ASCII 48
和9 number has ASCII 57
的范围内。所以每个数字都在ASCII 48 to 57
之间。
你可以将它们连接成一个字符串,因为你正在读取字符直到出现一个空格,一旦你得到2个数字就加上它们:)
代码可以是
的形式char[] number1;
char numRead;
keep reading the number using fscanf until a non-number appears.
if ( numRead >= '0' && num <= '9' ) // checking for if it is a number.
number1 += numRead; // atleast thats how you do it in C++
答案 2 :(得分:0)
检查fscanf()
对于非数字,它可以返回-1
以及0
或1
代码。