簡體   English   中英

C:使用scanf讀取CSV文本文件

[英]C : Reading CSV text file with scanf

我正在嘗試使用scanf()從正在編寫的程序中讀取CSV文件中的一些值。 這是我目前正在做的事情:

int i, j, id, time1, time2, time3, type, value;

scanf("%d,%d,%d,%d,%d,%d", &id, &time1, &time2, &time3, &type, &value);
printf("%d", value);

例如,讓我們看看此CSV行5, 14:09:01, 1, 1013

scanf()正確讀取idtime1 ,但是在那之后,我得到了一些其他變量的怪異值。 例如, value顯示為32767time2顯示為4195536 有人知道我在做什么錯嗎?

PS:無論如何,除了使用time1,time2和time3來獲取時間外,我還可以將其打印為字符串以避免那些額外的變量?

文件x.csv僅包含一行:

5, 14:09:01, 1, 1013

這個簡單的代碼將為您完成工作-時間將作為字符串讀入char數組。 請注意,這將讀取逗號,因此您需要擺脫它。

#include <stdio.h>
#include <string.h>

int main(void)
{
    int id, type, value;
    char time[100];
    FILE* f = fopen("x.csv", "r");
    fscanf(f, "%d, %s %d, %d", &id, time, &type, &value);
    size_t len = strlen(time);
    time[len-1] = '\0';  // get rid of comma
    printf("%d %s %d %d\n", id, time, type, value);
    fclose(f);
    return 0;
}

輸出:

5 14:09:01 1 1013

暫無
暫無

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

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