我有一个包含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
,我可以得到整行,但是如何用空格分隔列并将它们存储在数组中呢?
感谢。
答案 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)