Создать новый файл, содержащий все слова, отличные от последнего слова - C (СИ) (76128)
Формулировка задачи:
Дан текстовый файл, содержащий последовательность слов. Между соседними словами – запятая, за последним словом – точка. Создать новый файл, содержащий все слова, отличные от последнего слова
Решение задачи: «Создать новый файл, содержащий все слова, отличные от последнего слова»
textual
Листинг программы
- #include <string.h>
- #include<stdio.h>
- int main()
- {
- FILE* fin = fopen("1.txt", "r"); // открываем файл для чтения
- fseek(fin, 0, SEEK_END); // курсор в конце файла
- if (fin == 0) printf("Error!\n");
- else
- {
- char ch;
- int i = 2;
- while (true) // находим начало последнего слова
- {
- fseek(fin, -i, SEEK_CUR);
- ch = fgetc(fin);// читаем символ в позиции курсора
- if (ch == ' ') break; // если пробел
- }
- char word[30];
- fscanf(fin, "%s", word); // читаем последнее слово
- word[strlen(word) - 1] = ','; // заменяем точку на запятую
- clearerr(fin);
- fseek(fin, 0, SEEK_SET); // курсор в начало
- FILE* fout = fopen("2.txt", "w"); // открываем файл для записи
- char str[30];
- while(true)
- {
- fscanf(fin, "%s", str); // читаем слова
- if (feof(fin)) break; // если последнее слово считано, то выход
- if (strcmp(str, word)) // если слово не равно последнему, то записываем в файл
- {
- fputs(str, fout);
- fputc(' ', fout);
- }
- }
- fseek(fout, -2, SEEK_CUR);
- fputc('.', fout);
- }
- getchar();
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с файлами и строками
- Открываем файл
1.txt
для чтения - Перемещаем курсор в конец файла
- Если файл не открылся, выводим сообщение об ошибке
- Иначе, инициализируем переменную
ch
для хранения текущего символа - Инициализируем переменную
i
значением 2 - Входим в бесконечный цикл, пока не встретим пробел
- Перемещаем курсор в начало текущего слова
- Читаем текущее слово и сохраняем его в переменной
word
- Заменяем последнюю точку на запятую
- Открываем файл
2.txt
для записи - Входим в цикл, пока не достигнем конца файла
1.txt
- Читаем текущее слово и сохраняем его в переменной
str
- Если это последнее слово, то выходим из цикла
- Если текущее слово не равно последнему слову, то записываем его в файл
2.txt
- Добавляем пробел после каждого слова, кроме последнего
- Записываем последнюю точку в файл
2.txt
- Закрываем файлы
1.txt
и2.txt
- Ждем нажатия любой клавиши
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д