これは私が遭遇している非常に楽しい問題です。私はスタックオーバーフローで多くの検索を行いましたが、他の人にも同様の問題があることがわかりました。だから私はそれに応じてコードを書きました。私はもともと持っていましたfscan()
がstrcmp()
、それは完全に私を爆撃しました。したがって、他の投稿が提案fgets()
しstrncmp()
、長さを使用してそれらを比較します。
2つの文字列のサイズを出力して、自分が行っていることをデバッグしようとしました。たぶん、彼らは/n
そこか何かに浮かんでいて、それを台無しにしているのではないかと思いました(別の投稿がそれについて話しましたが、私はそれがここで起こっているとは思いません)。したがって、サイズが同じである場合、の制限は同じであるstrncmp()
必要があります。右?それらが正しく比較されていることを確認するためだけに。0
これで、文字列が同じ場合は、それ以外の場合は。で負の値が返されることがわかりましたstrncmp()
。しかし、それは機能していません。
これが私が得ている出力です:
perk
repk
Enter your guess: perk
Word size: 8 and Guess size: 8
Your guess is wrong
Enter your guess:
これが私のコードです:
void guess(char *word, char *jumbleWord)
{
size_t wordLen = strlen(word);
size_t guessLen;
printf("word is: %s\n",word);
printf("jumble is: %s\n", jumbleWord);
char *guess = malloc(sizeof(char) * (MAX_WORD_LENGTH + 1));
do
{
printf("Enter your guess: ");
fgets(guess, MAX_WORD_LENGTH, stdin);
printf("\nword: -%s- and guess: -%s-", word, guess);
guessLen = strlen(guess);
//int size1 = strlen(word);
//int size2 = strlen(guess);
//printf("Word size: %d and Guess size: %d\n",size1,size2);
if(strncmp(guess,word,wordLen) == 0)
{
printf("Your guess is correct\n");
break;
}
}while(1);
}
以下の提案から更新しました。char *
特に、ポインタとしてと何かを文字列として参照することの違いを学んだ後。ただし、それでも同じエラーが発生します。
MAX_WORD_LENGTH
これは、私のプログラムの上部で次のように使用される定義ステートメントであることに注意してください。
#define MAX_WORD_LENGTH 25