Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取CSV文件中的特定信息_C_Csv - Fatal编程技术网

如何读取CSV文件中的特定信息

如何读取CSV文件中的特定信息,c,csv,C,Csv,如何查找CSV文件的特定部分?我只需要0,0,Kemper A,500,50,50,5,502000等每个属性的所有值。 我一直在做的是 Number of Spaces,10,,,,,,,, ,,,,,,,,, ,,,,,,,,, Type,Set Id,Intraset Id,Name,Property Cost,House Cost,Hotel Cost,Rent,Rent with House,Rent With Hotel Go,400,MU,,,,,,, Property,0,0,K

如何查找CSV文件的特定部分?我只需要
0,0,Kemper A,500,50,50,5,502000等每个属性的所有值。
我一直在做的是

Number of Spaces,10,,,,,,,,
,,,,,,,,,
,,,,,,,,,
Type,Set Id,Intraset Id,Name,Property Cost,House Cost,Hotel Cost,Rent,Rent with House,Rent With Hotel
Go,400,MU,,,,,,,
Property,0,0,Kemper A,500,50,50,5,50,2000
Property,0,1,Kemper B,1000,50,50,10,75,2500
Property,1,0,Bainer A,2000,200,200,20,100,3000
Property,1,1,Bainer B,2500,200,200,25,150,3000
Property,1,2,Bainer C,3000,200,200,30,200,3500
Property,2,0,SocialSci A,4000,400,400,40,300,4000
Property,2,1,SocialSci B,4500,400,400,45,400,4000
Property,2,2,SocialSci C,5000,400,400,50,500,4000
Property,2,3,SocialSci D,5500,400,400,55,600,4500
但这似乎效率低下/每个板都不同,并且没有固定数量的属性。有什么线索吗

回答时要记住语言
C

不,这不会像你已经看到的那样起作用。方法是使用
fgets()
逐行读取文件,然后解析它。这将是一个选择。用你的方式扫描第一个
scanf
会成功,而后一个不会成功。然后那些
,,,
将留在流中,使您对
scanf
的连续调用无法正常工作

我所说的解决方案-使用
fgets
,然后尝试查找出现的单词
“Go”
,一旦您找到它,然后在这一行上,在修剪行的结尾和开头的空白之后,如果您知道格式将始终是
Go,400,MU,,,,,,,
然后使用
strtok
解析并获取输入。在需要从字符串转换为
int
的情况下,可以使用
strtol
(对于
float/double
使用
strtod
strtof
)函数

此外,如果您希望自己不受所有这些解析和处理的影响,请查找一些解析库(
csv
parser-不要问是哪一个),其中有很多

fscanf(file,"Number of Spaces,%d",&b->numSpaces);
fscanf(file,"Go,%d",&b->goValue);