Как удалить пустые параграфы из txt? - C (СИ)
Формулировка задачи:
есть txt :
1111111111
5555555555555555555555
00000000
3333333
222222
444444444
//////////////////////////////////////////////////
Как убрать эти параграфы?
чтоб получилось так :
1111111111
5555555555555555555555
00000000
3333333
222222
444444444
/////////////////////////////////////////////
Решение задачи: «Как удалить пустые параграфы из txt?»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <ctype.h>
int is_blank(const char* s) {
while(*s) {
if (0 == isspace(*s))
return 0;
++s;
}
return 1;
}
enum constants {
LINE_SZ = 1024
};
int main(int argc, char **argv) {
FILE *in, *out;
char line[LINE_SZ];
setlocale(LC_ALL, "");
if(NULL == (in = fopen("input.txt" , "r")))
return 1;
if(NULL == (out = fopen("output.txt", "w")))
return 1;
while (0 == feof(in)) {
if (NULL == fgets(line, LINE_SZ, in))
break;
if (0 == is_blank(line))
fputs(line, out);
}
fclose(in);
fclose(out);
return 0;
}
Объяснение кода листинга программы
- удаление пустых параграфов из txt
- проверка на пустой параграф: функция is_blank, которая проверяет, является ли строка пустым параграфом (возвращает 0, если есть хотя бы один не пробельный символ, и 1, если все символы пробельные)
- константы: LINE_SZ — размер строки в символах (1024)
- открытие файлов: ввод из
input.txt, вывод вoutput.txt(если файлы не открываются, программа завершается с возвратом 1) - цикл чтения: пока не достигнут конец файла (feof(in) == 0), программа читает строку из файла (если строка не читается, программа завершается и переходит к следующей итерации цикла)
- проверка на пустой параграф: если строка не является пустым параграфом (is_blank(line) == 0), программа записывает ее в выходной файл
- закрытие файлов: после окончания чтения программа закрывает входной и выходной файлы
- возврат 0: программа успешно выполнена