我对这段代码有点麻烦。我有一个文件products.csv,我试图读取和存储在结构中的值。有一行是使用fscanf()从csv文件中读取C
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);
}
另一种方法是逐行读取文件,并使用'strtok()'来解析它。 – RichouHunter
你尝试过使用'fgets'吗? – RoadRunner
'fscanf(inFile,“%[^,]%[^,]%[^,]%lf%d”,product-> productType,product-> productID,product-> productDescription,&product-> productPrice, > quantityInStock);'。注意int&float的路过地址 –