Создать новый текстовый файл, в каждой строке которого записаны слова, начинающиеся с буквы ‘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, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д