Написать программу на языке Си, которая удаляет все гласные из строки?
Мне нужно написать функцию на языке Си, чтобы удалить все гласные из данной строки, а затем переместить все буквы влево, чтобы при удалении гласной оставалось o пустых мест. пример того, как эта функция должна работать, заключается в том, что если входная строка "hello", то программа должна возвращать "hll" (без пустых мест, где были гласные)
обратите внимание, что это функция, поэтому определение функции должно быть:
void removeVowels (char* word)
я очень ценю вашу помощь. спасибо :)
Что я уже пробовал:
это то, что я сделал, но это неправильно:
void removeVowels(char* word) { char word[100],newString[100]; int i, j = 0; for (i = 0; i <= strlen(word); i++) { if (word[i] == 'a' || word[i] == 'e' || word[i] == 'i' || word[i] == 'o' || word[i] == 'u') { word[i] = ' '; } else { newString[j++] = word[i]; newString[j] = '\0'; }
Richard MacCutchan
Функция должна возвращать новую строку, поэтому ее определение должно включать char*
Возвращаемый тип. Кроме того, вам не нужно заменять гласную пробелом, а просто не копируйте ее в новую строку.
Member 12794813
Спасибо за ответ,Ричард
изначально у меня был return, но он не компилировался. я думал, что void не должен иметь оператора return, но я новичок в программировании, поэтому не совсем уверен.
не могли бы вы исправить то, что не так с моим кодом, пожалуйста?
Richard MacCutchan
Вам нужно изменить определение на char* removeVowels(char* source)
Затем вам нужно выделить новый массив символов, используя malloc (), внутри функции, где вы храните все остальные символы. Как только вы закончите, просто верните указатель в выделенный буфер.