我有一个C程序,它从.txt文件中读入一个用逗号分隔的值列表,并将这些值赋给变量。我想把第一个值赋给一个字符串,第二个赋值给int,第三个赋值给double,第四个赋值给double。但是,整行被分配给字符串,其余的是垃圾或随机值。我希望能够“跳过”逗号,并读取逗号之间的赋值。最后的双精度数在末尾有一个百分号,所以我使用%%来读取值,至少这是我认为应该做的。
fscanf(text_file, "%s,%d,%lf,%lf%%%[^\n]", title, &count, &size, &percentage);一个数据点看起来像这样:黄叶,43,4.50,9.00%,但是title的值包含整行,其余的值都是随机的垃圾值。
发布于 2019-01-27 01:25:28
请记住,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
}https://stackoverflow.com/questions/54380775
复制相似问题