#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中进行输入并且它有效,但我没有看到这个问题。我已经多次检查过几次小错误,我没有看到任何错误......
答案 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,但这是一般的想法。