Программа для просмотра файлов "Súbor" в С(Си) - C (СИ)
Формулировка задачи:
Напишите программу, которая группирует фразы из prvy.txt и druhy.txt и записует в файловую treti.txt попеременно так, чтобы каждое парное слово в файле будет treti.txt из файла prvy.txt и каждый пара из файла druhy.txt в порядке были в исходном файле. Каждое слово в файле treti.txt будет с последующим пробелом. Кроме того, перед каждым словом отметит выражения, из которого файлы слово происходит. Если из файла prvy.txt, бренд символ +, если druhy.txt, бренд является признаком -. Если некоторые из файлов содержит больше слов, чем видов, и эти будут перечислены в ряд в конце файла treti.txt. Предположим, что слово содержит только буквы и могут быть разделены только одним пробелом.
" Я не знаю как это записать, но это должно выглядить так... Заранее спасибо!!!Решение задачи: «Программа для просмотра файлов "Súbor" в С(Си)»
#include <stdio.h> #include <assert.h> #include <ctype.h> int main() { FILE* f = NULL, * f1, * f2, * f3; int ch; assert((f1 = fopen("pervy.txt", "r"))); assert((f2 = fopen("druhy.txt", "r"))); assert((f3 = fopen("treti.txt", "w"))); while (!feof(f1) || !feof(f2)) { f = (f == f1) ? f2 : f1; if ((ch = fgetc(f)) != EOF) { fprintf(f3, "%c%c", (f == f1) ? '+' : '-', ch); while (((ch = fgetc(f)) != EOF) && (!isspace(ch))) { fputc(ch, f3); } fputc(' ', f3); } } fclose(f3); assert((f3 = fopen("treti.txt", "r"))); while ((ch = fgetc(f3)) != EOF) { putchar(ch); } fclose(f3); fclose(f2); fclose(f1); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
stdio.h
для работы с файлами и выводом данных на экран;assert.h
для проверки истинности выражения перед выполнением программы;ctype.h
для определения класса символа (является ли он буквой, цифрой, знаком препинания и т.д.).
- Определяется точка входа в программу - функция
main()
. - Создаются четыре переменные:
FILE* f
,FILE* f1
,FILE* f2
,FILE* f3
для работы с файлами.
- В блоке
assert()
открываются три файла:f1
открывает файлpervy.txt
для чтения;f2
открывает файлdruhy.txt
для чтения;f3
открывает файлtreti.txt
для записи.
- В цикле
while
происходит чтение двух файлов одновременно:f
переключается междуf1
иf2
с помощью тернарного оператора;- Если символ не является концом файла (
EOF
), он записывается вf3
вместе с символом-разделителем; - До тех пор, пока не встретится пробел или конец файла, в
f3
записываются все символы из текущего файла.
- Файл
f3
закрывается. - В блоке
assert()
открывается файлtreti.txt
для чтения. - В цикле
while
происходит чтение символов изf3
и их вывод на экран. - Файл
f3
закрывается. - Файлы
f2
иf1
закрываются. - Возвращается значение 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д