读取文件的格式,第一行是列表名:
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAX_COLUMNS 10
#define MAX_ROWS 100
int main() {
FILE *file = fopen("D:\\research\\demor\\model\\em100.csv", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
// 读取第一行,即列标明
char line[1024];
fgets(line, sizeof(line), file);
// 使用sscanf解析列标明
char columnNames[MAX_COLUMNS][256];
int numColumns = sscanf(line, "%s %s %s", columnNames[0], columnNames[1], columnNames[2]);
// 读取数据并保存为数组
double data[MAX_ROWS][MAX_COLUMNS];
int numRows = 0;
while (fgets(line, sizeof(line), file) != NULL && numRows < MAX_ROWS) {
sscanf(line, "%lf,%lf,%lf", &data[numRows][0], &data[numRows][1], &data[numRows][2]);
numRows++;
}
// 关闭文件
fclose(file);
// 打印列标明
for (int i = 0; i < numColumns; i++) {
printf("%-15s", columnNames[i]);
}
printf("\n");
// 打印数据
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < 3; j++) {
printf("%-15.6f", data[i][j]);
}
printf("\n");
}
return 0;
}
问题:一开始总是出现错误的是输出的文件格式第二列,第三列为0
原因:是因为读取文件格式有问题
原代码是
sscanf(line,"%lf %lf %lf", &data[numRows][0], &data[numRows][1], &data[numRows][2])
用空格读取了,但是csv在notepad打开的时候,中间是用逗号隔开的。
引用代码,运行成功输出如下:
错误解决参考:读取csv之间是用逗号隔开的