gpt4 book ai didi

c - 如何在 C 中读取 .csv 文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:33:25 27 4
gpt4 key购买 nike

我知道关于这个主题还有其他问题,但我仍然找不到问题的解决方案。

我正在尝试使用 fscanf() 函数读取 C 中的 .csv 文件。

如果我用文本编辑器打开 csv 文件,它看起来像这样:

578,2.2212e+05,223,0,243,0,0,0.09,0,0,0,3
633,2.2222e+05,223,0,243,0,0,-0.04,0,0,0,3
688,2.2232e+05,223,0,243,0,0,0.07,0,0,0,3
740,2.2242e+05,223,0,243,0,0,0.04,0,0,0,3
793,2.2252e+05,224,0,244,0,0.01,0.16,0,0,0,3
848,2.2262e+05,223,0,717,0.060985,0.02,0.08,0,0,0,4
902,2.2272e+05,223,0,721,0.084618,0.03,0.24,0,0,0,5
955,2.2282e+05,223,0,730,0.12825,0.05,0.34,0,0,0,4

我只报告了前几行,但它包含更多内容。

然后我使用这段代码来读取文件:

FILE* stream = fopen("./filelog.csv", "r");
if(stream == NULL) {
printf("\n file opening failed ");
return -1 ;
}
int values[8];
int count;
for(count = 0; count < 8; count++) {

int u = fscanf(stream, "%i", &values[count]);
printf("%i\n", values[count]);
}

我得到的输出如下:

578
32697
0
0
1
0
4199901
0

我们可以看到只有第一个值被正确读取。我怎样才能读取整个文件并将其存储到矩阵中?我无法在任何地方找到任何解决方案。非常感谢您的提前回复!

最佳答案

您的格式字符串 %i 解析单个整数,但整数之后的下一个内容是逗号,而您没有解析它。在使用值之前,您应该始终检查返回值,以确保解析成功。

您需要一个与文件的实际内容相匹配的格式字符串,例如:

if (fscanf(stream, " %d,%f,%d,%d,%d,%d,%d,%f,%d,%d,%d,%d", ...) == 12)
{
}

在上面的代码中,... 的意思是“在此处放置指向 12 个适当类型变量的指针”。格式字符串前面的空格旨在帮助“消耗”流中的空格(如换行符)。

关于c - 如何在 C 中读取 .csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51207032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com