簡體   English   中英

從C中的文本文件讀取列

[英]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
}

我相信您可以使用帶有標簽定界符的字符串標記器。 這是一個例子

你可以用strtok

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

遍歷每個單詞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM