私はあなたが何でswitch
あるかを誤解していると思います。/switch
のような選択構造です。たとえば、次の 2 つのコード スニペットは (一般的に) 同等です。if
else
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 */