如何读取CSV文件中的特定信息
如何查找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
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);