-1
我在用C讀CSV文件,並想將strtok()中的標記存儲在數組中。不知何故,當CSV文件有多行時,我沒有得到正確的令牌輸出。 CSV文件看起來像這樣(只是兩行的這個例子,真正的文件將有超過100行):strtok()沒有打印正確的值
abc,def,ghi
jkl,mno
我的代碼是:
void main() {
FILE *fp;
fp = fopen("simple.csv", "r");
const char s[2] = ",";
char *token;
char *out[5];
int i = 0;
if (fp != NULL)
{
char line[50];
while (fgets(line, sizeof line, fp) != NULL)
{
token = strtok(line, s);
//for (token; token != NULL; token = strtok(NULL, ","))
while (token != NULL)
{
out[i++] = token;
//printf("%s", token);
token = strtok(NULL, s);
}
printf("%s\n", out[0]);
}
//for (i = 0; i < 5; i++)
fclose(fp);
}
else {
printf("error opening file");
}
}
我希望每個逗號分隔字符串通過循環存儲在一個數組中。 當我打印出數組(out[0]
)的第1個要素,輸出爲:
abc
jkl
,而我希望它只是令牌:
ABC
任何人都可以請讓我知道問題是什麼?
您使用的是相同的* *'line'爲*每*'fgets'緩衝區。所以當然結果會覆蓋每一行輸入。 – kaylum
我是新手。你能告訴我如何解決這個問題嗎? –
是的,他們是第一列。我想將CSV文件中的每個字符串存儲到一個數組中。 –