[英]C : Reading CSV text file with scanf
我正在尝试使用scanf()从正在编写的程序中读取CSV文件中的一些值。 这是我目前正在做的事情:
int i, j, id, time1, time2, time3, type, value;
scanf("%d,%d,%d,%d,%d,%d", &id, &time1, &time2, &time3, &type, &value);
printf("%d", value);
例如,让我们看看此CSV行5, 14:09:01, 1, 1013
。
scanf()
正确读取id
和time1
,但是在那之后,我得到了一些其他变量的怪异值。 例如, value
显示为32767
, time2
显示为4195536
。 有人知道我在做什么错吗?
PS:无论如何,除了使用time1,time2和time3来获取时间外,我还可以将其打印为字符串以避免那些额外的变量?
文件x.csv仅包含一行:
5, 14:09:01, 1, 1013
这个简单的代码将为您完成工作-时间将作为字符串读入char数组。 请注意,这将读取逗号,因此您需要摆脱它。
#include <stdio.h>
#include <string.h>
int main(void)
{
int id, type, value;
char time[100];
FILE* f = fopen("x.csv", "r");
fscanf(f, "%d, %s %d, %d", &id, time, &type, &value);
size_t len = strlen(time);
time[len-1] = '\0'; // get rid of comma
printf("%d %s %d %d\n", id, time, type, value);
fclose(f);
return 0;
}
输出:
5 14:09:01 1 1013
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.