Вывести на экран слова, начинающиеся с гласных букв - C (СИ)
Формулировка задачи:
Написать программу, которая считывает английский текст из файла и выводит на экран слова,
начинающиеся с гласных букв.
Вот примерно есть но она почему то не работает. Подскажите ошибку =(
#include <iostream> #include <stdlib.h> #include <string.h> #include <conio.h> using namespace std; int main(int argc, char *argv[]) { FILE *f; char word[50]={0}, str[80] = {0}; f=fopen(".\\Text.txt", "r"); printf("\nVivod: "); while (!feof(f)) { fgets(str,80,f); if (str[i] == ' ') { switch(str[i+1]) { case 'a':{ int k=0; for(int j=i; j<80; j++) { if(str[j] == ' ') break; word[k] = str[j]; k++; } } case 'u':{nt k=0; for(int j=i; j<80; j++) { if(str[j] == ' ') break; word[k] = str[j]; k++;} } case 'i':{nt k=0; for(int j=i; j<80; j++) { if(str[j] == ' ') break; word[k] = str[j]; k++;} } case 'o':{nt k=0; for(int j=i; j<80; j++) { if(str[j] == ' ') break; word[k] = str[j]; k++;} } case 'e':{nt k=0; for(int j=i; j<80; j++) { if(str[j] == ' ') break; word[k] = str[j]; k++;} } case 'y':{nt k=0; for(int j=i; j<80; j++) { if(str[j] == ' ') break; word[k] = str[j]; k++;} } } puts(word); } fclose(f); getch(); return 0; }
Решение задачи: «Вывести на экран слова, начинающиеся с гласных букв»
textual
Листинг программы
#include <string.h> #include <ctype.h> #include <stdio.h> #define DELIM " \t\n,.:;!?-" int main(void) { FILE* file; if ((file = fopen("1.txt", "r")) == NULL) { perror("Cannot open file"); return 1; } char str[80] = {0}; while (fgets(str, 80, file)) { int i = 0, j = 0; char* ptr = strtok(str, DELIM); for (; ptr != NULL; ptr = strtok(NULL, DELIM)) { switch (tolower(*ptr)) { case 'a': case 'e': case 'i': case 'o': case 'u': case 'y': printf("%s\n", ptr); } } } fclose(file); getchar(); return 0; }
Объяснение кода листинга программы
Выполнение программы:
- Сначала программа открывает файл
1.txt
для чтения. Если файл не может быть открыт, программа выводит сообщение об ошибке и завершает свое выполнение с кодом возврата 1. - Затем программа создает массив символов 'str' типа char размером 80 символов со значением 0.
- Далее программа читает файл построчно с помощью функции fgets() и сохраняет каждую строку в массив 'str'.
- Затем программа разбивает каждую строку на отдельные слова с помощью функции strtok(). В качестве разделителя используется строка
\t\n,.:;!?-
. - Для каждого слова программа проверяет первую букву в нижнем регистре с помощью функции tolower(). Если первая буква является гласной (a, e, i, o, u, y), программа выводит это слово на экран с помощью функции printf().
- После обработки всех слов в строке программа переходит к следующей строке.
- После обработки всех строк в файле программа закрывает файл с помощью функции fclose().
- Программа завершает свое выполнение после получения символа от пользователя с помощью функции getchar(). Используемые переменные:
- file - указатель на файл.
- str - массив символов для хранения строк из файла.
- i, j - счетчики для обработки слов в строке.
- ptr - указатель на текущее слово в строке.
- DELIM - строка, используемая в качестве разделителя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д