Вывести текст без гласных букв - C (СИ)

Узнай цену своей работы

Формулировка задачи:

I’ve watched through his eyes, I’ve listened through his ears, and I tell you he’s the one. Or at least as close as we’re going to get. That’s what you said about the brother. The brother tested out impossible. For other reasons. Nothing to do with his ability. Same with the sister. And there are doubts about him. He’s too malleable. Too willing to submerge himself in someone else’s will. Not if the other person is his enemy. So what do we do? Surround him with enemies all the time? If we have to. I thought you said you liked this kid. If the buggers get him, they’ll make me look like his favorite uncle. All right. We’re saving the world, after all. Take him. Надо вывести текст без гласных букв. Помогите пожалуйста.

Решение задачи: «Вывести текст без гласных букв»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define LENGTH_STR 100 // максимальная длина строки для имени файла
#define VOWELS_COUNT 12 // количество гласных - 6 в нижнем и 6 в верхнем регистрах
 
int main() {
 
    char fName[ LENGTH_STR ]; // имя файла
    printf( "Введите имя файла: " );
    fgets( fName, LENGTH_STR, stdin ); // считываем имя файла
    fName[ strcspn( fName, "\n" ) ] = '\0'; // убираем символ новой строки, если он был введён
 
    FILE* fin = fopen( fName, "r" ); // открываем файл для чтения
 
    if ( !fin ) { // если не удалось открыть
        perror( "Не смогли открыть файл " ); // сообщаем об этом
        // выходим из программы и возвращаем в ОС
        return EXIT_FAILURE; // код о НЕуспешном завершении программы
    }
 
    // массив гласных букв
    // каждую букву считанную из файла будем сравнивать с буквами данного массива
    const char vowels[ VOWELS_COUNT ] = "AEIOUYaeiouy";
 
    char ch; // для очередного считываемого символа
    // пока не достигли конца файла считываем очередной символ из файла
    while ( ( ch = fgetc( fin ) ) ) { // в переменную ch
 
        int i;
        int flag = 1; // полагаем, что очередная буква НЕгласная
        // проходим в цикле все элементы массива гласных
        for ( i = 0; i < VOWELS_COUNT; ++i )
            // если очередной символ из массива гласных совпадает
            if ( vowels[ i ] == ch ) { // со считанным только что из символом из файла
                flag = 0; // запоминаем это
                break; // и прерываем цикл по массиву гласных
            }
 
        if ( flag ) // если очередной символ оказался таки НЕгласной
            putchar( ch ); // выводим его
    }
 
    fclose( fin ); // закрываем файл
 
    return EXIT_SUCCESS;
}

Объяснение кода листинга программы

В этом коде считывается имя файла с помощью функции fgets(). Это имя используется для открытия файла с помощью функции fopen(). Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается с кодом ошибки EXIT_FAILURE. Затем вводится массив гласных букв vowels[], который используется для проверки каждого символа, считанного из файла. В цикле while считываются символы из файла с помощью функции fgetc(). Для каждого символа проверяется, является ли он гласной буквой, сравнивая его с каждым элементом массива vowels[]. Если символ является гласной, то он не выводится. Если символ не является гласной, он выводится с помощью функции putchar(). После окончания чтения файла, файл закрывается с помощью функции fclose(), и программа завершается с кодом успеха EXIT_SUCCESS.

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


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

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

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