Удалить из заданной строки все гласные буквы. Вывести результат на экран. СИ
Необходимо удалить из заданной строки все гласные буквы и вывести результат на экран. Написал такую программу, однако проблема в 16-ой строчке (знаю, что сравнивать символ со строкой нельзя в си, но и написать str[j] я не могу, так как будет идти проверка на текущий символ без учёта следующих и предыдущих). Подскажите пожалуйста, что необходимо исправить.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n, i;
char s[250], out[250];
printf("\n Enter string of chars: ");
fgets(s, 250, stdin);
for (i = 0; s[i]!='\0'; i++) {
char str[] = "AaEeIiOoUu";
for(int j=0; j<10; j++) {
if (s[i] != str) {
out[i] = s[i];
}
}
}
printf("\n%s\n", out);
return (0);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну напишите
if (strchr(str,s[i]) == NULL)
Т.е. если символа s[i] в строке str нет.
Только это не единственная ваша ошибка... Я бы делал так (исправляя ваш код):
int main()
{
char str[] = "AaEeIiOoUu";
char s[250], out[250];
printf("\n Enter string of chars: ");
fgets(s, 250, stdin);
int j = 0;
for(int i = 0; s[i]; i++)
if (!strchr(str,s[i])) out[j++] = s[i];
out[j] = 0;
printf("\n%s\n", out);
}
А еще можно без строки out вообще...
int main()
{
char str[] = "AaEeIiOoUu";
char s[250];
printf("\n Enter string of chars: ");
fgets(s, 250, stdin);
int j = 0;
for(int i = 0; s[i]; i++)
if (!strchr(str,s[i])) s[j++] = s[i];
s[j] = 0;
printf("\n%s\n", s);
}