如何检查变量是否为整数类型

时间:2016-02-20 12:29:19

标签: c

我只是想检查一个变量中存在的值是否为整数。

  

我的程序从" 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;
}

3 个答案:

答案 0 :(得分:1)

检查fscanf的返回值。 fscanf返回成功扫描的项目数,如果出现IO错误,则返回-1。因此,如果数字格式不正确,fscanf("%d",&a[i]);应返回0.

答案 1 :(得分:0)

将文件作为ASCII字符读取并检查其ASCII代码。如果ASCII位于数字0 number has ASCII 489 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 以及01代码。