[英]Reading columns from a text file in 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
,我可以得到整行,但是如何分隔帶有空格的列並將它們存儲在數組中?
謝謝。
您可以使用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
}
我相信您可以使用帶有標簽定界符的字符串標記器。 這是一個例子 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.