Я пытаюсь написать программу, которая может добавить строку в текстовый файл (с учетом данных, взятых из фактической программы), и которая может удалить строку с определенным словом в нем.Когда я либо пытаюсь добавить строку в конце, либо просто удаляю строку, она работает как задумано.Проблема возникает, когда я добавляю, а затем удаляю строку (не обязательно ту же строку).Если я выполняю обе операции, то только что добавленная строка также удаляется, даже если это не та строка, которую программа хотела удалить.Вот мой код для двух операций:
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 ("имя файла", "те"), затем он правильно добавляет "те" кконец файла (в новом файле).но если я позвоню добавить, то сразу же вызовите удаление на произнесении «это», я получу:
, что
это
в новом файле
Яполностью застрял в том, почему это так.Любая помощь будет принята с благодарностью