私はC言語を学んでおり、質問があります。この演習では、ダブル・ダッチと呼ばれるゲームをプログラミングして、ストリングで練習する方法を学ばなければなりません。私が遭遇した問題は、プログラムがforループ条件(最初のforループ)のために実行を停止することです。 strlen()関数は、メインとayInFrontOfConsonant関数で最初に文字列の長さを印刷するときにうまく動作しますが、なぜプログラムが機能しなくなったのかわかりません。 Xcodeでは、スレッド1:EXC_BAD_ACCESSというメッセージが表示されます。どんな助力も非常に感謝しています。なぜこのforループ条件でstrlen関数が機能しないのですか?
void ayInFrontOfConsonant(char *str)
{
char consonants[42] = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k',
'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z', 'B',
'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S',
'T', 'V', 'W', 'X', 'Y', 'Z'};
int a=(int)strlen(str);
printf("\n Length of str in ay function: %d\n",a);
int i=0,j=0;
for(i=0;i<strlen(str);i++) //problem is here
{
for(j=0;j<strlen(consonants);j++)
{
if(str[i]==consonants[j])
{
//insertChar(str, 'a', i);
}
}
}
}
int main()
{
int a=0;
printf("** Welcome to the Double Dutch game **\n");
char myString[36];
printf("Please enter a string: ");
scanf("%[^\n]s", myString);
a=strlen(myString);
printf("Length of string in main: %d\n",a);
ayInFrontOfConsonant(myString);
printf("Double dutch traslation: %s\n",myString);
return 0;
}
入力内容は何ですか? –
私が使用する入力は: "私はCコードを書くのが好きです" –
'strlen()'が何をしているのか分かっていれば、そのように使うことはできません。 –