Member 12794813 Ответов: 1

Написать программу на языке Си, которая удаляет все гласные из строки?


Мне нужно написать функцию на языке Си, чтобы удалить все гласные из данной строки, а затем переместить все буквы влево, чтобы при удалении гласной оставалось 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 (), внутри функции, где вы храните все остальные символы. Как только вы закончите, просто верните указатель в выделенный буфер.

1 Ответов

Рейтинг:
0

Patrice T

Одна из причин, по которой ваш код не работает, заключается в том, что вы используете word как параметр и как локальная переменная, что никогда не делается.

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.