Попытка вернуть ввод из функции в C - PullRequest
1 голос
/ 15 июля 2009
    #include <stdio.h>
#include <stdlib.h>
#include <time.h>

void initDeck (int deck[]);
void showDeck (int deck[]);
void shuffleDeck (int deck[]);
int getBet ();

main()
{
    int deck[52];
    int playerBet;
    char z;
    initDeck(deck);
    shuffleDeck(deck);
    showDeck(deck);
    playerBet = getBet();
    //scanf ("%d\n", &playerBet);
    printf("%d\n", playerBet);
    z = 1;
    getchar(z);

    return 0;
}

void initDeck (int deck[]){
    int k;
    int i;
    for (k = 1; k < 53; k++){
        i = k - 1;
        deck[i] = k;
    }
    return;
}

void showDeck (int deck[]){
    int k;
    for (k = 0; k < 52; k++){
        printf("%d\n", deck[k]);
    }
    return;
}

void shuffleDeck (int deck[]){
    int random;
    int k;
    int temp;
    srand(time(0));
    for (k = 52; k > 1; k--){   
        random = (rand() % k) + 1;
        if (random != k){
            temp = deck[k - 1];
            deck[k - 1] = deck[random - 1];
            deck[random- 1] = temp;
        }
        else{
            k++;
            continue;
        }
    }


    return;
}

int getBet (){
    int bet;
    scanf ("%d\n", &bet);
    return bet;
}

Рассматриваемая функция - getBet (), и когда я ввожу целое число, она не дает никакого вывода. Я попытался сделать ввод в main, и это сработало, но я не вижу проблемы с этим. Я дважды проверил на мелкие ошибки несколько раз, и я не вижу в этом ничего плохого ...

Ответы [ 3 ]

4 голосов
/ 15 июля 2009

Проблема в том, что вы заканчиваете строку scanf новой строкой. Это означает (прочитайте документацию по scanf) любое количество пробелов. Поэтому, когда вы вводите "", он все еще ждет больше пустого пространства. Попробуйте ввести непробельные символы после этого, чтобы увидеть, что он принимает ввод. Как говорит Артем, пропуск \ n может быть одним из решений.

2 голосов
/ 15 июля 2009

вместо

scanf("%d\n", &bet);

до

scanf("%d", &bet);

Только что протестировано и работает.

0 голосов
/ 15 июля 2009

Я тоже не вижу ошибки. Почему бы вам не передать его по адресу?

int main()
{
   int playerBet;
   //
   getBet(&playerBet);
}

void getBet(int* bet)
{
   scanf("%d", bet);
}

Я не делаю C, но это общая идея.

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