最简单的(也是最灵活的,有一些陷阱是使用scanf函数):
#include <stdio.h>
struct Record {
int temperature;
unsigned int pressure_segment;
double slope;
int offset;
};
int readRecord(FILE* f, Record* rec) {
if (fscanf(f,
"Temperature = %i Pressure Segment %u Slope = %lf Offset = %i\n",
&rec->temperature,
&rec->pressure_segment,
&rec->slope,
&rec->offset) == 4) {
return 0;
} else {
return -1;
}
}
Record rec;
FILE* f = fopen("your-file-name", "r");
while (!feof(f)) {
if (readRecord(f, &rec) == 0) {
printf("record: t: %i p: %u s: %lf o: %u\n",
rec.temperature,
rec.pressure_segment,
rec.slope,
rec.offset);
}
}
fclose(f);
对于任何高级的使用(读比快速和肮脏的解决方案,任何东西),我建议使用一些CSV库散围绕互联网。
编辑:编辑问题的readRecord版本(每条记录在一个单独的行上)。
int readRecord(FILE* f, Record* rec) {
if (fscanf(f,
"Temperature = %i\nPressure Segment %u\nSlope = %lf\nOffset = %i\n",
&rec->temperature,
&rec->pressure_segment,
&rec->slope,
&rec->offset) == 4) {
return 0;
} else {
return -1;
}
}
来源
2010-10-22 09:03:46
MaR
你的意思是CSV(逗号分隔值)文件吗? – bdhar 2010-10-22 08:05:20
可能重复的[如何在C中逐行读取文件](http://stackoverflow.com/questions/1842393/how-to-read-a-file-line-by-line-in- c) – 2010-10-22 08:06:46
是的! (对不起,我的错误) – Asad 2010-10-22 08:08:42