Обработка файлов C: Упражнение 8 с решением
Напишите программу на C для удаления определенной строки из файла.
Предположим, что содержимое файла test.txt: тестовая строка 1 тестовая строка 2 тестовая строка 3 тестовая строка 4
Пример решения:
Код C:
#include #include #define MAX 256 int main () {int lno, ctr = 0; char ch; ФАЙЛ * fptr1, * fptr2; char fname [MAX]; char str [MAX], temp [] = "temp.txt"; printf (" n n Удалить определенную строку из файла: n"); printf ("----------- ------------------------------ n "); printf ("Введите имя файла для открытия:"); scanf ("% s", fname); fptr1 = fopen (имя файла, "г"); if (! fptr1) {printf ("Файл не найден или невозможно открыть входной файл !! n"); возврат 0; } fptr2 = fopen (temp, "ш"); //открыть временный файл в режиме записи if (! fptr2) {printf ("Невозможно открыть временный файл для записи !! n"); fclose (fptr1); возврат 0; } printf ("Введите строку, которую вы хотите удалить:"); scanf ("% d", & lno); lno ++; //копируем все содержимое во временный файл, кроме определенной строки while (! feof (fptr1)) {strcpy (str, " 0"); fgets (str, MAX, fptr1); если (! feof (fptr1)) {ctr ++; /* пропустить строку с заданным номером */if (ctr! = lno) {fprintf (fptr2, "% s", str); }}} fclose (fptr1); fclose (fptr2); удалить (имя); //удаляем исходный файл rename (temp, fname); //переименовать временный файл в исходное имя/* ------ Прочитать файл ---------------- */fptr1 = fopen (fname, "r"); ch = fgetc (fptr1); printf ("Теперь содержимое файла% s: n", fname); в то время как (ch! = EOF) {printf ("% c", ch); ch = fgetc (fptr1); } fclose (fptr1);/* ------- Конец чтения --------------- */return 0; }
Пример вывода:
Удалить определенную строку из файла: ---------------- ------------------------- Введите имя файла, который нужно открыть: test.txt Введите строку, которую вы хотите удалить: 2 Теперь содержимое файла файл тест. txt: тестовая строка 1 тестовая строка 3 тестовая строка 4
Блок-схема:
Редактор кода программирования на C: