gpt4 book ai didi

c - 使用 fscanf() 从 C 中的 csv 文件中读取

转载 作者:行者123 更新时间:2023-12-03 23:19:25 26 4
gpt4 key购买 nike

我对这段代码有点麻烦。我有一个文件 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 )

  • 检查工作示例 here .

    关于c - 使用 fscanf() 从 C 中的 csv 文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125193/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com