我正在使用getchar()读取文本文件,我需要在文件中打印所有整数。如果文件如下:
hello 42 world
我知道如何找到单个数字的整数,因为getchar()给出了文件中每个字符的ascii值,所以我需要查找48到57之间的值(ascii值为0-9)但我不能找出如何为n位数做这个。在上面的例子中,我会找到“42”的值52和50但是如何将其变为42?
我考虑过创建一个char数组,当我找到一个数字时将它放在数组中,然后使用atoi()将字符串转换为int,但如果它甚至可以工作,感觉就像是一个糟糕的解决方案。
答案 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;
}