как удалить имена из файла CSV - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь удалить имя Бен из файла CSV. Однако написанный код также удаляет все другие имена, кроме последнего. Это причина для этого?

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 голосов
/ 07 апреля 2019

Для начала я думаю, что вам определенно следует использовать free (буфер), он почти 1MB , и вы не должны делать утечки памяти такими большими. Пока мы обсуждаем эту тему, я вполне уверен, что вы также должны перераспределить буферы памяти, прежде чем писать ее.

И вы нашли решение, в котором вы просто удалили строку с именем "ben"? Вы можете заполнить его место, указав фамилию в списке на этом месте ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...