【发布时间】:2009-12-01 09:34:09
【问题描述】:
如何将用分号分隔的不同数据记录读入 C 中的数组中?
来自文本文件: 文本一; 12.25;正文二; 5个;正文三; 1.253
fopen ...
for(i = 0; i < nrRecords; i++) {
fscanf(myFile, " %[^;];", myRecords[i].firstText); /* Ok first text*/
fscanf(myFile, "%lf", &myRecords[i].myDouble1); /* But goes wrong with first double */
fscanf(myFile, " %[^;];", myRecords[i].secondText);
fscanf(myFile, "%d", &myRecords[i].myInt1);
fscanf(myFile, " %[^;];", myRecords[i].thirdText);
fscanf(myFile, "%lf",&myRecords[i].myDouble2);
}
fclose...
【问题讨论】:
-
如果您将每个字段读取为字符串 %[^;];,您是否得到正确的文本(例如第二个字段中的“12.25”)?
-
不,问题是我正在将它读入具有“固定”类型的结构数组中。
-
我试过了,它工作正常。你能显示 myRecord 结构的定义吗?
-
struct myRecord{ char text1[20];双倍价格;字符文本2[30];诠释天然橡胶;字符文本3[30];双倍价格2; };
-
它是如何“出错”的?为什么不检查 fscanf 的返回值?