我有一个C程序,该程序从.txt文件中读取用逗号分隔的值列表,并将这些值分配给变量。我想将第一个值赋给一个字符串,第二个赋给一个int,第三个赋给一个双精度,第四个赋给一个双精度。但是,整行都分配给了字符串,其余的都是垃圾或随机值。我希望能够“跳过”逗号并读取逗号之间的赋值。最后一个双精度字符的末尾有一个百分号,因此我使用%%读取值,至少那是我认为应该做的。
<span itemprop="itemNum">56789</span>
数据点如下所示: 黄叶,43,4.50,9.00% 但是title的值包含整行,其余的只是随机垃圾值。
答案 0 :(得分:1)
请记住,scanf()
不适合用户输入。
无论如何... "%s"
读取逗号(跳过空格),请尝试"%[^,]"
。
// assuming
// char title[99];
if (fscanf(f, " %98[^,],%d...", title, ...) != 4) /* error */;
// ^ skip whitespace
更好的方法:用fgets()
读整行,然后用sscanf()
进行解析。
char buff[999];
while (fgets(buff, sizeof buff, f)) {
// parse buff
}