每次都可以接受用户输入的循环

时间:2010-11-22 06:28:48

标签: c

如何在每次循环时创建一个可以接受用户输入的循环?

#include <stdio.h>

#define WORD "jumble"
#define JUMBLED "mleujb"

int main()
{
    char string[6];
    int i = 0;
    printf("The jumbled word is ");
    printf(JUMBLED);
    printf("\nCan you guess the original: ");
    while(i == 0)
    {
        scanf("%d", string);
        if (string == "exit")
        {
            return;
        }
        if(string == WORD)
        {
            i++;
            printf("Kudos! You've guessed the word!");
        }
        else
        {
            printf("English please, good sir. Guess again.\n");
        }
    }
}

我所希望的是每次程序经过循环时,都需要一个带scanf函数的新输入。但是,这显然不起作用。相反,程序获取第一个scanf的值并反复使用它。如果它是错误的单词,它将有一个无限循环。

这个程序中有一些错误:例如,它实际上并没有将输入与实际单词进行比较。由于这与问题无关,因此不是我的直接关注。

3 个答案:

答案 0 :(得分:2)

您错误地使用scanf()而不是scanf("%d",string)使用scanf("%s",string),因为%d用于十进制输入,而%s用于字符串输入

答案 1 :(得分:1)

准确帮助你的伪代码不是很好 您还可以更好地定义您的问题吗?你真的不知道出了什么问题

但这是我的猜测

您的测试是i == 0,这意味着只要您的用户输入正确的单词即可退出您的循环...

我猜你在寻找像

这样的东西
exit_condition = 0;

while (exit_condition == 0)
{

   read keyboard entry

    if(condition to exit loop)
    {

        exit_condition = 1;
        printf("correct")
    }
    else
    {
        printf("try again")
    }

}

关于测试,我认为你需要读取输入和测试的位

试试这个

http://www.arachnoid.com/cpptutor/student1.html

答案 2 :(得分:1)

  1. scanf对于获取输入字符串不正确。它应该是scanf(“%s”,string),正如其他人所指出的那样
  2. 在'C'中使用==无法进行字符串比较。它只会比较两个失败的字符串的地址。请改用“strncmp”功能。