Итак, я хочу создать код, который заглавны первой буквой каждого слова в строковом массиве, а затем выводит строку в обратном порядке. Я не мог напечатать массив в обратном порядке, но с этим в сторону, это то, что я придумал:Заглавные буквы каждого слова в строковом массиве
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
char string[100];
int i, j;
char newString[100];
printf("\nEnter string: ");
gets(string);
for (i=0; i <strlen(string); i++){
if (string[i] == ' ' && isalnum(string[i+1])==1){ //if the character is preceded by a space
newString[i] = toupper(string[i+1]); //copy the uppercase of the character to newString
}
if (isalpha(string[0]) == 1){ //capitalize the first character in the string if it is a letter
newString[0] = toupper(string[0]); //copy character to newString
}else{
newString[i] = string[i];
}
}
printf("%s", newString); //preferably, the newString should be printed in reverse order, but I can't seem to do it.
}
Если:
Вход: Каррен Леннарт
Предполагаемый выход этого кода: Каррен Леннарт
(то, что я хочу: narruC tranneL)
Как это, все, что я получаю выход:
curran lennarta
Ввод «дамских дам» приводит к «дамским котятам». Если вход:
julie olsen
Выход:
julie olsenw
Пожалуйста, помогите. :(
'man isalpha' дает' RETURN VALUE: возвращаемые значения отличны от нуля, если символ c попадает в тестируемый класс и равен нулю, если нет. Таким образом, вы не можете быть уверены: 'isalnum (string [i + 1]) == 1' будет' true', даже если это буквенно-цифровой символ. – Missu