Я новичок в C и программировании. Я застрял в выполнении домашних заданий. Мой вывод показывает только первый символ в верхнем регистре и следующие символы в некоторых странных числах. Может кто-нибудь взглянуть на мой код и дать мне несколько советов о том, что я сделал неправильно, и о том, как исправить эту проблему? Ваша помощь очень ценится!Указатель и массив в C
«Напишите функцию void sticky (char * word), где слово - это одно слово, например« липкое »или« СЛУЧАЙНОЕ ». Sticky() должно изменить слово, чтобы оно появилось с« липкими колпачками »(http://en.wikipedia.org/wiki/StudlyCaps), что Буквы должны быть в чередующихся случаях (верхнем и нижнем), начиная с верхнего регистра для первой буквы. Например, «липкий» становится «StIcKy», а «RANDOM» становится «RaNdOm». Следите за концом строка, обозначаемая «\ 0». Вы можете предположить, что лексические строки передаются функции sticky() ».
#include <stdio.h>
#include <stdlib.h>
/*converts ch to upper case, assuming it is in lower case currently*/
char toUpperCase(char ch)
{
return ch-'a'+'A';
}
/*converts ch to lower case, assuming it is in upper case currently*/
char toLowerCase(char ch)
{
return ch-'A'+'a';
}
void sticky(char* word){
/*Convert to sticky caps*/
for (int i = 0; i < sizeof(word); i++)
{
if (i % 2 == 0)
{
word[i] = toUpperCase(word[i]);
}
else
{
word[i] = toLowerCase(word[i]);
}
}
}
int main(){
/*Read word from the keyboard using scanf*/
char word[256];
char *input;
input = word;
printf("Please enter a word:\n");
scanf("%s", input);
/*Call sticky*/
sticky(input);
/*Print the new word*/
printf("%s", input);
for (int i = 0; i < sizeof(input); i++)
{
if (input[i] == '\n')
{
input[i] = '\0';
break;
}
}
return 0;
}
'/ * преобразует ч в нижний регистр, при условии, что в верхнем регистре в настоящее время * /' и наоборот, это большой ключ. – SGM1
Слияние ответа Кита и ритеша кажется лучше – SGM1