Создать новый файл, содержащий все слова, отличные от последнего слова - C (СИ) (76128)

Узнай цену своей работы

Формулировка задачи:

Дан текстовый файл, содержащий последовательность слов. Между соседними словами – запятая, за последним словом – точка. Создать новый файл, содержащий все слова, отличные от последнего слова

Решение задачи: «Создать новый файл, содержащий все слова, отличные от последнего слова»

textual
Листинг программы
  1. #include <string.h>
  2. #include<stdio.h>
  3.  
  4. int main()
  5. {
  6.  FILE* fin = fopen("1.txt", "r"); // открываем файл для чтения
  7.  
  8.  fseek(fin, 0, SEEK_END); // курсор в конце файла
  9.  
  10.  if (fin == 0) printf("Error!\n");
  11.  else
  12.  {
  13.      char ch;
  14.      int i = 2;  
  15.      while (true) // находим начало последнего слова
  16.      {
  17.             fseek(fin, -i, SEEK_CUR);
  18.            
  19.             ch = fgetc(fin);// читаем символ в позиции курсора
  20.             if (ch == ' ')  break; // если пробел
  21.      }
  22.  
  23.         char word[30];
  24.         fscanf(fin, "%s", word); // читаем последнее слово
  25.         word[strlen(word) - 1] = ','; // заменяем точку на запятую
  26.        
  27.         clearerr(fin);
  28.         fseek(fin, 0, SEEK_SET); // курсор в начало
  29.        
  30.         FILE* fout = fopen("2.txt", "w"); // открываем файл для записи
  31.  
  32.         char str[30];
  33.         while(true)
  34.         {
  35.             fscanf(fin, "%s", str); // читаем слова
  36.            
  37.             if (feof(fin)) break;   // если последнее слово считано, то выход
  38.             if (strcmp(str, word))  // если слово не равно последнему, то записываем в файл
  39.             {
  40.                 fputs(str, fout);
  41.                 fputc(' ', fout);
  42.             }
  43.         }
  44.         fseek(fout, -2, SEEK_CUR);
  45.         fputc('.', fout);
  46.  }
  47.      
  48.  getchar();
  49.  return 0;
  50. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с файлами и строками
  2. Открываем файл 1.txt для чтения
  3. Перемещаем курсор в конец файла
  4. Если файл не открылся, выводим сообщение об ошибке
  5. Иначе, инициализируем переменную ch для хранения текущего символа
  6. Инициализируем переменную i значением 2
  7. Входим в бесконечный цикл, пока не встретим пробел
  8. Перемещаем курсор в начало текущего слова
  9. Читаем текущее слово и сохраняем его в переменной word
  10. Заменяем последнюю точку на запятую
  11. Открываем файл 2.txt для записи
  12. Входим в цикл, пока не достигнем конца файла 1.txt
  13. Читаем текущее слово и сохраняем его в переменной str
  14. Если это последнее слово, то выходим из цикла
  15. Если текущее слово не равно последнему слову, то записываем его в файл 2.txt
  16. Добавляем пробел после каждого слова, кроме последнего
  17. Записываем последнюю точку в файл 2.txt
  18. Закрываем файлы 1.txt и 2.txt
  19. Ждем нажатия любой клавиши
  20. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы