2014-10-30 78 views
0

您好,我做了一个程序从传感器读取数据到一个csv文件。 空隙sensor_read(INT FD) {在C中排序CSV文件

FILE *fp; 
char c; 
do{ 
    while(!read(fd, &c, 1)); 
    printf("%c\n",c); 
}while (c!='$'); 

do{ 
    while(!read(fd, &c, 1)); 
    fp = fopen("/var/www/Sensor_data.txt", "a"); 
    fprintf(fp, "%c%", c); 
    printf("%c",c); 
    fclose(fp); 
}while (c!='\n'); 

}

数据读取看起来像这样: MEAS,587.088518,1.093652,1.988754,3522.934999,3522.013512,690.454784,896.428414,115.473813,23.875225 ,14.871661,2.847579,805.726416

我只需要标记7个值,所以我的问题是从文件中检索这些数据的好方法是什么?在写入文件或在文件制作完成后执行该操作并保存到新文件中,可以这样做吗?也许一些如何做到这一点的例子:)

在预先谢谢!

+0

你可以看看sort.c中的coreutils linux软件包源代码...但是,它是相当长和复杂的代码... – 2014-10-30 08:33:02

回答

0
double values[7] = {0}; 
fscanf(fp, "meas,%*lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf", &values[0], &values[1], 
    &values[2], &values[3], &values[4], &values[5], &values[6]); 
+0

感谢不能相当工作,我必须在fopen后添加这个权利?然后fprint(....)之后?当我这样做时,我得到7个文件中的数据,但不是测量的数据。 – Jacob 2014-10-30 08:59:43

+0

@Jacob这样做后你得到的数据是什么?顺便说一句,你必须用'%lf'而不是'%c%'来'fprintf()',你也可以用第一个'do ... while()'和第二个'do ... while() '用'fprintf()',应该可以工作。 – bitcell 2014-10-30 09:39:30

+0

当我使用printf(“%lf,%lf,%lf,%lf,%lf,%lf,%lf \ n”时,我得到了-0.00027,-0.00027,0.000,0.000,0.000,0.000,0.000, 0],&values [1],&values [2],&values [3],&values [4],&values [5],&values [6]);所以它看起来好像不读取文件或东西?我写了我的新代码作为答案 – Jacob 2014-10-30 11:12:20

0

空隙sensor_read(INT FD) {

FILE *fp; 
char c; 
double values[7] = {0}; 
fp = fopen("/var/www/Sensor_data.txt", "w"); 
do{ 
    while(!read(fd, &c, 1)); 
    printf("%c\n",c); 


    fscanf(fp, "meas,%*lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf", &values[0], &values[1], 
    &values[2], &values[3], &values[4], &values[5], &values[6]); 
}while (c!='$'); 

do{ 
    while(!read(fd, &c, 1)); 

    //fscanf(fp, "meas,%*lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf", &values[0], &values[1], 
    //&values[2], &values[3], &values[4], &values[5], &values[6]); 

    //fprintf(fp, "%lf,%lf,%lf,%lf,%lf,%lf,%lf\n", &values[0], &values[1], 
    //&values[2], &values[3], &values[4], &values[5], &values[6]); 

    printf("%lf,%lf,%lf,%lf,%lf,%lf,%lf\n", &values[0], &values[1], 
    &values[2], &values[3], &values[4], &values[5], &values[6]); 


}while (c!='\n'); 
fclose(fp); 

}

输入来自传感器是:$ MEAS,587.088518,1.093652,1.988754,3522.934999,3522.013512,690.454784,896.428414, 115.473813,23.875225,14.871661,2.847579,805.726416