首页 > 解决方案 > 从 C 中的文本文件中查找并保存整数

问题描述

我对编程和 C 语言非常陌生。我有一些文本文件,其中包含一些随机文本和一个我想查找并保存的整数。文本文件看起来像这样(在这种情况下我只想保存 23,而不是 56):

# this is a comment
23
this is some random text
56

这是我的代码:

    int *num = malloc(sizeof(int));
    *num = fgetc(f);

    while(!feof(f)){
        *num = fgetc(f);
        if(isdigit(*num)){
            break;
        }
    }

    if(!isdigit(*num)){
        printf("Error: no number found.\n");
        free(num);
    }
    else{
        printf("%c\n", *num);
    }

我现在有点卡住了,我的程序只打印出数字 2:/ 非常感谢您的帮助。

标签: cfilefile-handling

解决方案


正如@pbn 所说,你最好使用sscanf.

但是,如果您真的非常想要,您可以按照自己的方式进行,一次读取一个字符,但是您需要自己“构建”整数,将字符转换为整数,跟踪您拥有的内容,并且将您已有的数字的每个数字乘以 10 的幂。

像这样的东西(不是完整的代码,只是为了让你开始):

int c;
int num = 0;

while (c = fgetc(f)) {
    if(!isdigit(c)) {
        break;
    }
    num = (num * 10) + (c - '0');
}

c- '0'部分是将整数的文本表示形式转换为整数本身。0是字符 48,1是 49 等等。

这是假设在数字行中,您只有数字,而不是数字和非数字字符的混合。

另外,不要使用!feof(file)


推荐阅读