私はあなたが何でswitchあるかを誤解していると思います。/switchのような選択構造です。たとえば、次の 2 つのコード スニペットは (一般的に) 同等です。ifelse
if(a == 0)
printf("%s\n", "zero");
else if(a == 1)
printf("%s\n", "one");
else if(a == 2)
printf("%s\n", "two");
else
printf("%s\n", "invalid");
switch(a)
{
case 0:
printf("%s\n", "zero");
break;
case 1:
printf("%s\n", "one");
break;
case 2:
printf("%s\n", "two");
break;
default:
printf("%s\n", "invalid");
}
あなたが何をしようとしているのか完全にはわかりませんが、「一致する文字の切り替えが一致する場合 test[t] 0で、再度一致することはできません」と書くと、次のように聞こえます。
if (userword[k] == letterstest[t]){
letterstest[t] = '\0';
}
追加するために編集: OK、私はあなたがやろうとしていることを理解したと思います:
userword[0]と の間のすべての文字がとの間userword[wordsize-1]のどこかに現れることを確認したいとしletterstest[0]ますletterstest[7]。
- 特定の文字が ~ の間に複数回出現する場合、
userword[0]少なくともuserword[wordsize-1]~ の間に同じ回数出現する必要がletterstest[0]ありletterstest[7]ます。つまり、letterstest[0]との間の文字はletterstest[7]1 回だけカウントできます。
- 最終的な答えが正しい限り、
letterstest[0]との間に表示される文字を変更しても問題ありません。letterstest[7]つまり、 の内容を保存する必要はありませんletterstest。
- この文字はと
'\0'の間のどこにも出現しないため、「一致しない」ことを意味する「ダミー」値として使用できます。userword[0]userword[wordsize-1]
あれは正しいですか?
もしそうなら、あなたは書くことができます:
for(k = 0; k < wordsize; k++) {
for(t = 0; t < 8; t++) {
if(userword[k] == letterstest[t]) {
letterstest[t] = '\0'; /* don't let letterstest[t] count again */
break; /* O.K., we've matched userword[k], we can move on */
}
}
if(t == 8) /* we reached letterstest[8] without finding a match */
return 0;
}
return 1; /* we found a match for each character */