Преобразовать файл, удалив каждый символ ‘*’ и повторив каждый символ, отличный от ‘*’ - C (СИ)

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

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

Дан текстовый файл. Преобразовать его, удалив каждый символ ‘*’ и повторив каждый символ, отличный от ‘*’.

Решение задачи: «Преобразовать файл, удалив каждый символ ‘*’ и повторив каждый символ, отличный от ‘*’»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char* argv[]) {
  5.     if (argc != 2) {
  6.         fprintf(stderr, "Udage: %s <FILE>\n", argv[0]);
  7.         return EXIT_FAILURE;
  8.     }
  9.  
  10.     FILE* fsrc = fopen(argv[1], "r");
  11.     if (fsrc == NULL) {
  12.         perror(argv[1]);
  13.         return EXIT_FAILURE;
  14.     }
  15.  
  16.     char tmpname[L_tmpnam];
  17.     FILE* ftmp = fopen(tmpnam(tmpname), "w");
  18.     if (ftmp == NULL) {
  19.         fclose(fsrc);
  20.         perror(tmpname);
  21.         return EXIT_FAILURE;
  22.     }
  23.  
  24.     char ch;
  25.  
  26.     while ((ch = fgetc(fsrc)) != EOF) {
  27.         if (ch != '*') {
  28.             fprintf(ftmp, "%c%c", ch, ch);
  29.         }
  30.     }
  31.  
  32.     fclose(ftmp);
  33.     fclose(fsrc);
  34.  
  35.     if (remove(argv[1]) || rename(tmpname, argv[1])) {
  36.         perror(argv[1]);
  37.         return EXIT_FAILURE;
  38.     }
  39.  
  40.     return EXIT_SUCCESS;
  41. }

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

  1. Указать, что программа написана на языке C.
  2. Программа принимает на вход один аргумент — имя файла.
  3. Открыть файл для чтения.
  4. Если файл не открылся, то выдать сообщение об ошибке и завершить работу программы.
  5. Создать временный файл для записи результатов.
  6. Открыть временный файл для записи.
  7. Если файл не открылся, то закрыть исходный файл, выдать сообщение об ошибке и завершить работу программы.
  8. Пройти по всем символам исходного файла.
  9. Если символ не равен '*', то записать его во временный файл дважды.
  10. Закрыть временный файл.
  11. Переименовать временный файл в исходное имя файла.
  12. Если операция переименования не удалась, то выдать сообщение об ошибке и завершить работу программы.
  13. Вернуть успех.

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


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

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

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

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

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

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