Цикл, который может принимать пользовательский ввод каждый раз через - PullRequest
0 голосов
/ 22 ноября 2010

Как сделать цикл, который может принимать пользовательский ввод каждый раз, когда он повторяется?

#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 ]

2 голосов
/ 22 ноября 2010

вы используете scanf() неправильно вместо scanf("%d",string) используйте scanf("%s",string), поскольку% d используется для десятичного ввода, а% s используется для ввода строки

1 голос
/ 22 ноября 2010
  1. scanf неверно для получения входной строки.Это должно быть scanf ("% s", строка), как указано другими
  2. Сравнение строк невозможно выполнить с помощью == в 'C'.Он будет сравнивать только адрес двух строк, которые потерпят неудачу.Вместо этого используйте функцию 'strncmp'.
1 голос
/ 22 ноября 2010

Псевдокод для точной помощи вам не очень хорош. Можете ли вы определить свой вопрос немного лучше?вы на самом деле не говорите, что происходит не так

, но вот мое предположение

ваш тест равен 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...