Вывести текст без гласных букв - C (СИ)
Формулировка задачи:
Решение задачи: «Вывести текст без гласных букв»
#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.