私はCとプログラミングが初めてです。宿題の練習で行き詰まりました。私の出力は、大文字の最初の文字と、いくつかの奇妙な数字の次の文字のみを示しています。誰かが私のコードを見て、私が間違ったことと問題を解決する方法についてのヒントを教えてもらえますか? あなたの助けは大歓迎です!
「関数 void sticky(char* word) を記述します。ここで、word は「sticky」や「RANDOM」などの単一の単語です。sticky() は、「sticky caps」で表示されるように単語を変更する必要があります ( http://en.wikipedia. org/wiki/StudlyCaps )、つまり、最初の文字を大文字にして、大文字と小文字を交互に使用する必要があります。たとえば、「sticky」は「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;
}