使用getchar识别文件中的整数

时间:2014-10-04 01:07:54

标签: c

我正在使用getchar()读取文本文件,我需要在文件中打印所有整数。如果文件如下:

hello 42 world

我知道如何找到单个数字的整数,因为getchar()给出了文件中每个字符的ascii值,所以我需要查找48到57之间的值(ascii值为0-9)但我不能找出如何为n位数做这个。在上面的例子中,我会找到“42”的值52和50但是如何将其变为42?

我考虑过创建一个char数组,当我找到一个数字时将它放在数组中,然后使用atoi()将字符串转换为int,但如果它甚至可以工作,感觉就像是一个糟糕的解决方案。

1 个答案:

答案 0 :(得分:0)

Gene的方法包含在一个程序中:

#include <stdio.h>
#include <ctype.h>

main()
{
    int ch;
    do
    {
        int val = 0, digits = 0;
        while (isdigit(ch = getchar())) ++digits, val = 10 * val + (ch - '0');
        if (digits) printf("%d\n", val);
    } while (ch != EOF);
    return 0;
}