Создать новый текстовый файл, в каждой строке которого записаны слова, начинающиеся с буквы ‘a’ - C (СИ)

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

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

Дан текстовый файл, в каждой строке которого записано по несколько слов, разделенных пробелом. Создать новый текстовый файл, в каждой строке которого записаны слова, начинающиеся с буквы ‘a’ из соответствующей строки исходного файла. Вот,что у меня получилось,но эта программа удаляет слова,начинающиеся с буквы 'а',а мне надо наоборот-чтобы оставляла их.
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include <ctype.h>
  5. int main(void)
  6. {
  7. char str[100];
  8. char *a, *b;
  9. int i;
  10. FILE *fin, *fout;
  11. fin = fopen("text.txt", "rt");
  12. fout = fopen("text2.txt", "wt");
  13. if (fin == NULL || fout == NULL)
  14. {
  15. printf("Errorr");
  16. getch();
  17. return 0;
  18. }
  19. while (fgets(str, 100, fin))
  20. {
  21. for (i = 0; i < 100; i++)
  22. if ((str[i] == 'a' && i == 0) || (str[i] == 'a' && i > 0 && (ispunct(str[i - 1]) || isspace(str[i - 1]))))
  23. {
  24. a = str+i;
  25. b = a;
  26. while (isalpha(*b))
  27. ++b;
  28. strcpy(a, b);
  29. }
  30. }
  31. fputs(str, fout);
  32. fclose(fin);
  33. fclose(fout);
  34. return 0;
  35. }

Решение задачи: «Создать новый текстовый файл, в каждой строке которого записаны слова, начинающиеся с буквы ‘a’»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define DELIM "     \n,.;:!?'"
  4. int main()
  5. {
  6.     FILE *fin, *fout;
  7.     fin = fopen("input.txt", "r");
  8.     fout = fopen("output.txt", "w");
  9.  
  10.     char s[128], w[30], *p;
  11.     while(fgets(s, 128, fin)){
  12.         for(p = strtok(s, DELIM); p; p = strtok(NULL, DELIM)){
  13.             strcpy(w, p);
  14.             if(w[0] == 'a')
  15.                 fprintf(fout, "%s ", w);
  16.         }
  17.         fprintf(fout, "\n");
  18.     }
  19.     fclose(fin);
  20.     fclose(fout);
  21.     return 0;
  22. }

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

В этом коде используется язык программирования C. Программа считывает содержимое текстового файла, называемого input.txt, и записывает в другой файл, output.txt, только те строки, которые начинаются с буквы 'a'. Вот список действий, которые происходят в коде:

  1. Создаются две переменные типа FILE*, которые используются для работы с файлами. fin ссылается на файл input.txt, а fout - на файл output.txt.
  2. Файл input.txt открывается для чтения с помощью функции fopen().
  3. Файл output.txt открывается для записи с помощью функции fopen().
  4. Создаются две строковые переменные типа char. s имеет размер 128 символов и используется для чтения строк из файла input.txt. w имеет размер 30 символов и используется для хранения слов, начинающихся с 'a'.
  5. Запускается цикл while, который считывает строки из файла input.txt с помощью функции fgets().
  6. Внутри цикла while запускается еще один цикл for, который ищет слова, начинающиеся с 'a', используя функцию strtok().
  7. Если слово начинается с 'a', оно копируется в переменную w с помощью функции strcpy().
  8. С помощью функции fprintf() слово записывается в файл output.txt.
  9. После каждой строки записывается символ новой строки (\n) с помощью функции fprintf().
  10. После окончания внутреннего цикла for, программа продолжает работу с следующей строкой из внешнего цикла while.
  11. После окончания внешнего цикла while, файлы закрываются с помощью функции fclose().
  12. Программа возвращает 0, что означает успешное выполнение.

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


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

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

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

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

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

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