试图从C中的函数返回输入

时间:2009-07-15 05:16:08

标签: c function input

    #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 个答案:

答案 0 :(得分:4)

问题是你用换行符结束你的scanf字符串。这意味着(阅读scanf文档)任何数量的空白。因此,当您输入“”时,它仍然等待更多的空白区域。之后尝试输入非空格字符以查看它是否接受输入。正如Artem所说,省略\ n可能是一种解决方案。

答案 1 :(得分:2)

而不是

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

scanf("%d", &bet);

刚刚测试过它。

答案 2 :(得分:0)

我也没有看到错误。你为什么不通过地址传递它呢?

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

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

我不做C,但这是一般的想法。