如何从CSV文件中删除名称

时间:2019-04-06 16:57:18

标签: c file

我正在尝试从csv文件中删除名称ben。但是,编写的代码还会删除除最后一个名称以外的所有其他名称。是他们的原因吗?

FILE * pfile;
char line[21];
char *buffer;
char *ptr;

buffer = malloc(sizeof(char)*1000);
memset(buffer, 0, sizeof(char)*1000);
ptr = buffer;

//open the file
pfile = fopen("names.csv","r");

if(pfile != NULL){
    while(!feof(pfile)){
        fgets(line, 21, pfile);

        if(strcmp(line, "ben\n")!= 0){
            //put line in buffer
            strcpy(buffer, line);
            ptr += strlen(line);
        }
    }
    fclose(pfile);
    pfile = fopen("names.csv","w");
    fprintf(pfile, "%s", buffer);
    fclose(pfile);
}
else{
    printf("could not read file\n");
}
getch();

return 0;}

1 个答案:

答案 0 :(得分:0)

对于初学者来说,我认为您绝对应该使用free(buffer),它几乎是 1MB ,并且您不应该这样增加内存泄漏。在讨论这个主题时,我非常相信您还应该在写内存之前先 reallocate 缓冲内存。

您是否提出了一个解决方案,只需删除名称“ ben”所在的行?您可以通过将姓氏放在该位置的列表上来填充该位置...