Вывести на экран слова, начинающиеся с гласных букв - 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. Сначала программа открывает файл 1.txt для чтения. Если файл не может быть открыт, программа выводит сообщение об ошибке и завершает свое выполнение с кодом возврата 1.
  2. Затем программа создает массив символов 'str' типа char размером 80 символов со значением 0.
  3. Далее программа читает файл построчно с помощью функции fgets() и сохраняет каждую строку в массив 'str'.
  4. Затем программа разбивает каждую строку на отдельные слова с помощью функции strtok(). В качестве разделителя используется строка \t\n,.:;!?-.
  5. Для каждого слова программа проверяет первую букву в нижнем регистре с помощью функции tolower(). Если первая буква является гласной (a, e, i, o, u, y), программа выводит это слово на экран с помощью функции printf().
  6. После обработки всех слов в строке программа переходит к следующей строке.
  7. После обработки всех строк в файле программа закрывает файл с помощью функции fclose().
  8. Программа завершает свое выполнение после получения символа от пользователя с помощью функции getchar(). Используемые переменные:
  9. file - указатель на файл.
  10. str - массив символов для хранения строк из файла.
  11. i, j - счетчики для обработки слов в строке.
  12. ptr - указатель на текущее слово в строке.
  13. DELIM - строка, используемая в качестве разделителя.

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


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

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

14   голосов , оценка 4 из 5
Похожие ответы