从C中的文本文件中读取列

时间:2012-05-22 22:58:29

标签: c

我有一个包含100行和512列的文本文件,每列用一个标签分隔:

row1    00  00  20  00  11  00  00  00  00  10
        00  11  00  55  77  00  00  70  21  00
        90  ...

我想读一下数组中每一列的每一行和存储值。

我不想使用sscanf并将变量分开,因为它需要创建另外500个变量 如果我使用fgets,我可以得到整行,但是如何用空格分隔列并将它们存储在数组中呢?

感谢。

3 个答案:

答案 0 :(得分:4)

您可以使用strtok_r({3}}的可重入版本将字符串元素分隔为标记。您可以在循环中调用strtok_r,在每个令牌上调用strtok,然后将令牌添加到该行的数组中。

strtok_r的使用模式几乎与strtok的使用模式相同,但它有一个额外的参数来表示tokenizer的当前状态。常规strtok将该状态保留在静态内存中,使该函数不可重入。

const char *term = "\t\n\r "; // word terminators
char str[] = "quick brown fox jumps over the lazy dog";
char *state; // Invocation state of strtok_r
char *tok = strtok_r(str, term, &state); // First invocation is different
while (tok) {
        printf("%s\n", tok);
        tok = strtok_r(NULL, term, &state); // subsequent invocations call with NULL
}

答案 1 :(得分:1)

我相信你可以使用带有制表符分隔符的字符串标记器。这是一个example

答案 2 :(得分:1)

你可以使用strtok

http://www.cplusplus.com/reference/clibrary/cstring/strtok/

并迭代每个单词