c - 使用 getchar 识别文件中的整数

标签 c

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

hello 42 world

我知道如何查找单位数字整数,因为 getchar() 为我提供了文件中每个字符的 ascii 值,因此我需要查找 48 到 57 之间的值(0-9 的 ascii 值),但我不能弄清楚如何对 n 位数字执行此操作。在上面的示例中,我会找到“42”的值 52 和 50,但如何将其转换为 42?

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

最佳答案

基因的方法封装在程序中:

#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;
}

关于c - 使用 getchar 识别文件中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26188652/

相关文章:

c++ - Linux下捕获SIGKILL的调试程序

c - 将 va_list 传递给其他函数

c++ - CUDA 矩阵加法段错误

c - printf 上错误的 clock_t 输出值

c - 如何确保服务器区分从同一台计算机上的两个不同外壳运行的两个不同的 TCP 客户端?

c++ - MxCalloc 和 MxFree 与 OpenMP 结果双重释放或损坏

c - 在并行化矩阵乘法时,虚拟内核是否对性能有所贡献?

c - 重新定义;之前的定义是 'data variable'

调用 recv() block 输入

根据函数原型(prototype)编译时决定调用参数