这是我遇到的一个非常有趣的问题。我对堆栈溢出做了很多搜索,发现其他人也有类似的问题。所以我相应地编写了我的代码。我本来有fscan()
and strcmp()
,但这完全轰炸了我。所以其他帖子建议fgets()
并strncmp()
使用长度来比较它们。
我试图通过打印出我的两个字符串的大小来调试我在做什么。我想,也许他们/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