[英]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
终止符。
productPrice
和quantityInStock
不是指针,因此在scanf
您需要传递它们的指针( &product->productPrice
, &product-> quantityInStock
)
在此处查看一个有效的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.