Удалить гласные из строки - C (СИ)
Формулировка задачи:
Да, я смотрел похожие темы, но как-то мало понятно.
Объясните, пожалуйста, как происходит работа со строками
Насколько я понял, работать со строкой как с массивом нельзя - запись s[i], получается, некорректна - а как тогда разбивать ее(строку) на элементы и работать с ними(элементами)?
Для
удаления гласных из строки
надо использовать какие-то функции, которые делают это автоматически? Или можно записать строку как массив и работать с массивом?#pragma argsused
#include <iostream.h>
#include <conio.h>
#include <string.h>
int main() {
char s[10];
puts("Type your string right here");
gets(s); //ввод строки
puts(s);
getch();
}Решение задачи: «Удалить гласные из строки»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define VOWELS "AEIOUYaeiouy"
int main(void) {
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
char * vow = strpbrk(buf, VOWELS);
while ( vow ) {
memmove(vow, vow + 1, strlen(vow));
vow = strpbrk(vow, VOWELS);
}
printf("Result: %s", buf);
}
return 0;
}
Объяснение кода листинга программы
В этом коде на языке C удаляются все гласные из строки, введенной пользователем. Список действий:
- Включаются необходимые заголовочные файлы.
- Определяется строка, содержащая все гласные буквы.
- В функции main() создается буфер для хранения строки, введенной пользователем.
- Организуется цикл, который считывает строку от пользователя до тех пор, пока не будет введена пустая строка.
- Внутри цикла ищется первая гласная буква в строке с помощью функции strpbrk().
- Если гласная буква найдена, то с помощью функции memmove() все гласные буквы перемещаются в конец строки.
- Процесс поиска и удаления гласных букв повторяется до тех пор, пока все гласные буквы не будут удалены.
- После удаления всех гласных букв выводится итоговая строка.
- В конце функции main() возвращается 0, что означает успешное выполнение программы.