Вывести на экран слова, начинающиеся с гласных букв - 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 - строка, используемая в качестве разделителя.