В настоящее время у меня возникают проблемы с изменением содержимого строки.
Следующая программа, которую я пишу, переставляет слова в строке src, которые начинаются с согласного, так что согласный заканчивается в конце (bob -> obb). Слова, начинающиеся с гласной, остаются неизменными. Результат вставляется в строку dest.
Однако последнее слово ввода предложения всегда заканчивается отсутствующим согласным в конце (bob -> ob). Это говорит о том, что я не могу изменить содержимое последнего индекса строки dest.
Есть причина почему?
void convert(char src[], char dest[]) {
int i, isVowel, first_pos;
int len = strlen(src);
int count = 0;
char first = 0;
for (i = 0; i < len; i++) {
while (!isspace(src[i])) {
if (first == 0) {
first = src[i];
first_pos = i;
}
isVowel = first == 'a' || first == 'e' || first == 'i' || first == 'o' || first == 'u';
if (isVowel == 1) {
dest[count++] = src[i];
}
else if (i != first_pos) {
dest[count++] = src[i];
}
i++;
}
if (isVowel == 0) {
dest[count++] = first;
}
dest[count++] = ' ';
first = 0;
}
}
Ввод: "Привет, ребята"
Ожидаемый результат: "ih uysg"
Фактический результат: "ih uys"