我正在尝试使用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
。
有谁知道我做错了什么?
P.S。 :无论如何不是使用time1,time2和time3来获取时间,我可以将其打印为字符串以避免这些额外的变量吗?
答案 0 :(得分:1)
文件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