簡體   English   中英

使用fscanf()從C中的csv文件讀取

[英]Using fscanf() to read from a csv file in C

我對這段代碼有點麻煩。 我有一個文件products.csv,我試圖從中讀取值並存儲在結構中。 其中之一是

Book,B123,The Hunt for Red October,12.99,28

因為標題中包含空格,所以我知道我需要使用[^,]而不是%s因此fscanf()不會在空格處停止,但是這會弄亂文件的讀取,而且我不知道具體如何要解決這個問題。 這是代碼:

typedef struct {
    char productType[15];
    char productID[4];
    char productDescription[100];
    double productPrice;
    int quantityInStock;
} product_t;    

int main() {
    product_t product1;

    read_products(&product1);
}

int read_products(product_t *product) {
    FILE *inFile = fopen("products.csv", "r");

    fscanf(inFile, "%[^,] %[^,] %[^,] %lf %d", product->productType, product->productID, product->productDescription, product->productPrice, product->quantityInStock);

    printf("%s %s %s %lf %d", product->productType, product->productID, product->productDescription, product->productPrice, product->quantityInStock);
}

您要在逗號后加一個空格,而不要解析逗號。 改變這個

"%[^,] %[^,] %[^,] %lf %d"

到這個:

"%[^,],%[^,],%[^,],%lf,%d"

其他您有更多錯誤的信息:

  • productID[4]您需要一個5個字符的數組來容納\\0終止符。

  • productPricequantityInStock不是指針,因此在scanf您需要傳遞它們的指針( &product->productPrice&product-> quantityInStock

在此處查看一個有效的示例。

暫無
暫無

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

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