繁体   English   中英

C:使用scanf读取CSV文本文件

[英]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()正确读取idtime1 ,但是在那之后,我得到了一些其他变量的怪异值。 例如, value显示为32767time2显示为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM