如何从文件中读取数字串并将它们放在数组中?

时间:2012-02-11 04:24:55

标签: c arrays file numbers

如何保存数组中文本文件中的所有数字?例如:

  

我的名字是亨利,我今年19岁。我出生于1992年.5ro2k。

程序应该从文件中读取数字19,1992,5,2并将它们保存在一个数组中。如果单词是52rok,那么它应该读取数字52。

1 个答案:

答案 0 :(得分:2)

一种方法是用空格替换除数字之外的所有字符,并使用strtok标记生成的字符串。

这是一个脏的伪编码示例,您可以根据自己的需要进行修改:

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

int main() {
    char s[] = "My name is Henry, I am 19 years old. I was born in 1992. 5ro2k.";
    char *p = s;
    while (*p) {
        if (!isdigit(*p)) {
            *p = ' ';
        }
        p++;
    }
    p = strtok(s, " ");
    while (p) {
        printf("%s\n", p);
        p = strtok(NULL, " ");
    }
}

使这个例子变脏的主要原因是strtok的使用,这不是线程安全的。您应该使用strtok_r代替。当然你需要自己解析整数字符串(atoi是一个很好的选择)。