c-从csv文件中读取和更改字符串

问题描述 投票:0回答:1

因此,我在excel中打开了一个csv文件,我正在尝试复制该文件中的所有内容,并将其写入更改后的新文件中。我有第四列,每行中都填充有特定食物,我想对其进行更改,以便仅在新文件中打印出每种食物的首字母。像“丸子”一样,应打印为“ M”。问题是我不断遇到细分错误,但不知道是什么原因引起的。我花了几个小时试图解决这个简单的问题,但没有成功。任何帮助,将不胜感激。

    char readLine[lineCount];
    while(fgets(readLine, lineCount, fd)) {
        char* tmp = strdup(readLine);

        if(strcmp(getfield(tmp, 1), "Food") == 0){

            if(strcmp(getfield(tmp, 4), "Meatballs") == 0){
                fprintf(ft, "%c,", 'M');

            }else if(strcmp(getfield(tmp, 4), "Icecream") == 0){
                fprintf(ft, "%c,", 'I');
            }   

        }

        fprintf(ft, "\n");
        free(tmp);
    } 

getfield函数:

const char* getfield(char* line, int num){
    const char* tok;

    while(tok = strsep(&line, ","))
    {   
        if(!--num) {
            printf("%s\n", tok);
            return tok;
        }
    }
    return NULL;
}
c fopen fwrite fread strcmp
1个回答
0
投票

您的问题在于strsep函数。 strsep对传递给它的char**进行突变,以便在每次调用时都返回令牌,并且char**包含字符串的其余部分减去令牌和分隔符。解决方案要么是不使用strsep,要么是每次要调用getfield函数时都在readLine上调用strdup。

© www.soinside.com 2019 - 2024. All rights reserved.