Добавление, а затем удаление строки в текстовом файле с C - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь написать программу, которая может добавить строку в текстовый файл (с учетом данных, взятых из фактической программы), и которая может удалить строку с определенным словом в нем.Когда я либо пытаюсь добавить строку в конце, либо просто удаляю строку, она работает как задумано.Проблема возникает, когда я добавляю, а затем удаляю строку (не обязательно ту же строку).Если я выполняю обе операции, то только что добавленная строка также удаляется, даже если это не та строка, которую программа хотела удалить.Вот мой код для двух операций:

void add(char *file, *char info){
     FILE *p = fopen(file, "wt"); // check for error
     fprintf(file, "%s\n", info);// close file;}

Для удаления мы хотим удалить только один экземпляр (первый) имени

void delete(char *file, *char name){

   FILE *old = fopen(file, "rt");
   FILE *new = fopen("temp", "wt");
   char line[1000];
   fgets(line,999,old);
   int deleted = 0;
    while(!feof(csv_old)){
          if(strstr(line, name)==0 || deleted >= 1)
                    fputs(line, new);
            else if(strstr(line,name)!=0)
                    deleted++;
            fgets(line,999,old);}
    // close files

Например, если я сказал:

this

that

this

Скажем, я называю add ("имя файла", "те"), затем он правильно добавляет "те" кконец файла (в новом файле).но если я позвоню добавить, то сразу же вызовите удаление на произнесении «это», я получу:

, что

это

в новом файле

Яполностью застрял в том, почему это так.Любая помощь будет принята с благодарностью

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