Создать новый текстовый файл, в каждой строке которого записаны слова, начинающиеся с буквы ‘a’ - C (СИ)
Формулировка задачи:
Дан текстовый файл, в каждой строке которого записано по несколько слов, разделенных пробелом. Создать новый текстовый файл, в каждой строке которого записаны слова, начинающиеся с буквы ‘a’ из соответствующей строки исходного файла.
Вот,что у меня получилось,но эта программа удаляет слова,начинающиеся с буквы 'а',а мне надо наоборот-чтобы оставляла их.
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <conio.h>
- #include <ctype.h>
- int main(void)
- {
- char str[100];
- char *a, *b;
- int i;
- FILE *fin, *fout;
- fin = fopen("text.txt", "rt");
- fout = fopen("text2.txt", "wt");
- if (fin == NULL || fout == NULL)
- {
- printf("Errorr");
- getch();
- return 0;
- }
- while (fgets(str, 100, fin))
- {
- for (i = 0; i < 100; i++)
- if ((str[i] == 'a' && i == 0) || (str[i] == 'a' && i > 0 && (ispunct(str[i - 1]) || isspace(str[i - 1]))))
- {
- a = str+i;
- b = a;
- while (isalpha(*b))
- ++b;
- strcpy(a, b);
- }
- }
- fputs(str, fout);
- fclose(fin);
- fclose(fout);
- return 0;
- }
Решение задачи: «Создать новый текстовый файл, в каждой строке которого записаны слова, начинающиеся с буквы ‘a’»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #define DELIM " \n,.;:!?'"
- int main()
- {
- FILE *fin, *fout;
- fin = fopen("input.txt", "r");
- fout = fopen("output.txt", "w");
- char s[128], w[30], *p;
- while(fgets(s, 128, fin)){
- for(p = strtok(s, DELIM); p; p = strtok(NULL, DELIM)){
- strcpy(w, p);
- if(w[0] == 'a')
- fprintf(fout, "%s ", w);
- }
- fprintf(fout, "\n");
- }
- fclose(fin);
- fclose(fout);
- return 0;
- }
Объяснение кода листинга программы
В этом коде используется язык программирования C. Программа считывает содержимое текстового файла, называемого input.txt
, и записывает в другой файл, output.txt
, только те строки, которые начинаются с буквы 'a'.
Вот список действий, которые происходят в коде:
- Создаются две переменные типа FILE*, которые используются для работы с файлами. fin ссылается на файл
input.txt
, а fout - на файлoutput.txt
. - Файл
input.txt
открывается для чтения с помощью функции fopen(). - Файл
output.txt
открывается для записи с помощью функции fopen(). - Создаются две строковые переменные типа char. s имеет размер 128 символов и используется для чтения строк из файла
input.txt
. w имеет размер 30 символов и используется для хранения слов, начинающихся с 'a'. - Запускается цикл while, который считывает строки из файла
input.txt
с помощью функции fgets(). - Внутри цикла while запускается еще один цикл for, который ищет слова, начинающиеся с 'a', используя функцию strtok().
- Если слово начинается с 'a', оно копируется в переменную w с помощью функции strcpy().
- С помощью функции fprintf() слово записывается в файл
output.txt
. - После каждой строки записывается символ новой строки (\n) с помощью функции fprintf().
- После окончания внутреннего цикла for, программа продолжает работу с следующей строкой из внешнего цикла while.
- После окончания внешнего цикла while, файлы закрываются с помощью функции fclose().
- Программа возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д