Как удалить пустые параграфы из 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: программа успешно выполнена
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д