Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从C程序中读取.txt文件或.csv文件?_C - Fatal编程技术网

如何从C程序中读取.txt文件或.csv文件?

如何从C程序中读取.txt文件或.csv文件?,c,C,哪个C函数适合于读取操作?实际上,我的.txt或.csv文件有一个固定模式,如下所示: Temperature = 35 Pressure Segment 1 Slope = 5.5 Offset = 10 Temperature = 100 Pressure Segment 1 Slope = 53 Offset = 12 Temperature = 150 Pressure Segment 1 Slope = 1 Offset = 12 此外,哪个文件.txt或.csv易于从C程序中读

哪个C函数适合于读取操作?实际上,我的.txt或.csv文件有一个固定模式,如下所示:

Temperature = 35
Pressure Segment 1
Slope = 5.5
Offset = 10

Temperature = 100
Pressure Segment 1
Slope = 53
Offset = 12

Temperature = 150
Pressure Segment 1
Slope = 1
Offset = 12
此外,哪个文件.txt或.csv易于从C程序中读取?

最简单(但也是最不灵活的,并且存在一些缺陷的是使用scanf):


您是指CSV(逗号分隔值)文件吗?可能与@N 1.1重复:此链接很难理解。请帮帮我!请看这里:注意,当查看问题进行编辑时,数据似乎被分成了四行-当给出此答案时,现在显示的每套四行数据似乎都在一行上。@Jonathan:谢谢,“编辑”版本已过时。
#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);
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;
  }
}