我想“标记”一个名为“lista.csv”的文件,该文件包含如下列表:
ID(字符),温度(整数),RH(字符),时间(长整数),\ n,ID,......
等等。
我的目标是分离这些参数并对它们进行分类。换句话说,将它们从.csv文件中提取到一个struct中,其中每个组件都是一个字段(ID,temp等)。
我编写的程序是:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct datos {
char ID;
int temperatura;
char RH;
long int time;
};
struct datos sensor;
const char* getfield(char* linea)
{
const char* tok;
tok = strtok(linea, ",");
sensor.ID=tok;
printf("ID sensor:%c",sensor.ID);
tok = strtok(NULL, ",");
sensor.temperatura=atoi(tok);
printf("temperatura sensor:%c",sensor.temperatura);
tok = strtok(NULL, ",");
printf("RH sensor:%c",sensor.RH);
sensor.RH=tok;
tok = strtok(NULL, ",");
sensor.time=atoi(tok);
printf("time sensor:%c",sensor.time);
tok = strtok(NULL, ",");
}
int main()
{
char buf[1024];
FILE *p = fopen("lista.csv", "r");
while (fgets(buf, 1024, p))
{
char* tmp = strdup(buf);
getfield(tmp);
free(tmp);
}
}
似乎我不明白char
指针tok
是如何工作的,因为我没有积极的结果:存储在结构中的信息不能打印在屏幕上,“?”标志出现。
谢谢。