Упражнения на C: удаление определенной строки из файла
Обработка файла C: упражнение-8 с решением
Напишите программу на C для удаления определенной строки из файла.
Предположим, что содержимое файла test.txt: тестовая линия 1 тестовая линия 2 тестовая линия 3 тестовая линия 4
Пример решения:
Код C:
#include <stdio.h>
#include <string.h>
#define MAX 256
int main()
{
int lno, ctr = 0;
char ch;
FILE *fptr1, *fptr2;
char fname[MAX];
char str[MAX], temp[] ="temp.txt";
printf("\n\n Delete a specific line from a file :\n");
printf("-----------------------------------------\n");
printf(" Input the file name to be opened : ");
scanf("%s",fname);
fptr1 = fopen(fname, "r");
if (!fptr1)
{
printf(" File not found or unable to open the input file!!\n");
return 0;
}
fptr2 = fopen(temp, "w"); // open the temporary file in write mode
if (!fptr2)
{
printf("Unable to open a temporary file to write!!\n");
fclose(fptr1);
return 0;
}
printf(" Input the line you want to remove : ");
scanf("%d", &lno);
lno++;
// copy all contents to the temporary file except the specific line
while (!feof(fptr1))
{
strcpy(str, "\0");
fgets(str, MAX, fptr1);
if (!feof(fptr1))
{
ctr++;
/* skip the line at given line number */
if (ctr != lno)
{
fprintf(fptr2, "%s", str);
}
}
}
fclose(fptr1);
fclose(fptr2);
remove(fname); // remove the original file
rename(temp, fname); // rename the temporary file to original name
/*------ Read the file ----------------*/
fptr1=fopen(fname,"r");
ch=fgetc(fptr1);
printf(" Now the content of the file %s is : \n",fname);
while(ch!=EOF)
{
printf("%c",ch);
ch=fgetc(fptr1);
}
fclose(fptr1);
/*------- End of reading ---------------*/
return 0;
}
Пример вывода:
Удалить конкретную строку из файла: ----------------------------------------- Введите имя файла, который будет открыт: test.txt Введите строку, которую вы хотите удалить: 2 Теперь содержимое файла test.txt: тестовая линия 1 тестовая линия 3 тестовая линия 4
Блок - схема:
Редактор кода программирования C:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Previous: написать программу на C для подсчета количества слов и символов в файле.
Далее: Напишите программу на C, чтобы заменить определенную строку другим текстом в файле.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code