我有一个包含 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
,我可以获得整行,但是如何用空格分隔列并将它们存储在数组中?
谢谢。
最佳答案
您可以使用 strtok_r
,strtok
的可重入版本, 将字符串的元素分隔成标记。你可以在循环中调用strtok_r
,调用atoi
在每个标记上,并将标记添加到该行的数组中。
strtok_r
的使用模式与 strtok
几乎相同,但它有一个额外的参数来表示分词器的当前状态。常规 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
}
关于c - 从 C 中的文本文件中读取列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711277/