如何根据C中的匹配单词解析和排列csv文件的行?

时间:2018-06-15 17:56:05

标签: c csv fileparsing

我的csv文件格式如下:

name,birthmonth,country,hobby
jack,jan,england,soccer
roben,july,germany,soccer
emma,dec,china,tennis
yannick,sep,france,music
alex,nov,england,cricket
thomas,apr,germany,tennis
mike,oct,netherlands,cycling
michelle,feb,france,poetry
yui,mar,japan,coding
feng,jun,china,reading

我想使用C解析此文件,并以连续的方式将所有具有相同国家/地区的行放入,如下所示:

name,birthmonth,country,hobby
jack,jan,england,soccer
alex,nov,england,cricket
roben,july,germany,soccer
thomas,apr,germany,tennis
emma,dec,china,tennis
feng,jun,china,reading
yannick,sep,france,music
michelle,feb,france,poetry
mike,oct,netherlands,cycling
yui,mar,japan,coding

到目前为止,我已尝试过以下代码,但无法正确匹配并继续进行:

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<fcntl.h>
#include<string.h>

int main (int argc, char **argv) {
    //int line;
    char line[200];
    char *inputFile =  argv[1];
    FILE *input_csv_file;
    char a,b,c,d,e;

    input_csv_file = fopen(inputFile, "rt");

    if(input_csv_file ==0) {
        printf("Can not open input file \n");
    } 
    else {    
        //while((line = fgetc(input_csv_file)) != EOF) {
        while(fgets(line, sizeof line, input_csv_file) != NULL) {
            printf ("line = %s\n", line);
            if(sscanf(line, "%s,%s,%s,%s,%s", a,b,c,d,e)) {
            //if(sscanf(line, "%[^,], %[^,], %[^,], %[^,], %[^,]", a,b,c,d,e)) {
                printf("d=%s\n",d);

            }         

        }
    } 
    return 0;

}

我是C / C ++的新手。任何帮助将非常感激 感谢。

1 个答案:

答案 0 :(得分:0)

我可以编写代码以获取所需的输出。下面是代码:

let a = {
  a:1,
  b:2,
  c:3
}

let b = a;
console.log(a);   // output   { a: 1, b: 2, c: 3 }
delete b.a;
console.log(a)   // Expected output { a: 1, b: 2, c: 3 }    -- Actual output { b: 2, c: 3 }

感谢您的所有投入。任何进一步的改进都值得赞赏。

谢谢