Файлы в C являются последовательными объектами. Если вы не навязываете им собственную структуру (например, обрабатывает NUL-символы как несуществующие), единственный реальный способ удалить символы или строки - это перезаписать их, сдвинув часть файла после немного впереди.
Вы можете сделать это на месте с такими вещами, как fseek
и truncate
(последний не ISO C), либо читая из одного файла и записывая в другой.
Например, следующая программа удалит строку, содержащую 11
из стандартного ввода:
#include <stdio.h>
int main (void) {
char buff[1024];
while (fgets (buff, sizeof(buff), stdin) != NULL)
if (strcmp (buff, "11\n") != 0)
printf ("%s", buff);
return 0;
}
Остерегайтесь обычных строк предупреждений, слишком длинных для входного буфера.