问题遇到的现象和发生背景
(结构体)随机发牌。一副纸牌52张,4种花色,每种花色13张。用程序模拟随机发牌过程,将52张牌按轮转的方式发放给4人,并输出发牌结果。(当我使用单文件编程时,可以运行。但是当我将调用的函数放到另一个文件里,结果就不行了)
用代码块功能插入代码,请勿粘贴截图
源.c
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"1.h"
struct card
{
int suit;
int face;
};
int main()
{
int i;
struct card deck[52];
const char* suit[] = { "s","ss","sss","ssss" };
const char* face[] = { "A","K","Q","J","10","9","8","7","6","5","4","3","2","1" };
deal(deck);
for (i = 0; i < 52; i++)
{
if (i % 13 == 0) {
printf("Player %d:\n", i / 13 + 1);
}
printf("%s of %s\n", face[deck[i].face], suit[deck[i].suit]);
}
return 0;
}
1.h
void deal(struct card* wdeck)
{
int m, i, t;
static int temp[52] = { 0 };
srand(time(NULL));
for (i = 0; i < 52; i++)
{
while (1) {
m = rand() % 52;
if (temp[m] == 0) {
break;
}
}
temp[m] = 1;
t = (i % 4) * 13 + (i % 4);
wdeck[t].suit = m / 13;
wdeck[t].face = m % 13;
}
}
运行结果及报错内容
用VS时
用Dev时
我的解答思路和尝试过的方法
单文件时可行,为什么两个文件不行
单文件时
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//#include"1.c"
struct card
{
int suit;
int face;
};
void deal(struct card* wdeck)
{
int m, i, t;
static int temp[52] = { 0 };
srand(time(NULL));
for (i = 0; i < 52; i++)
{
while (1) {
m = rand() % 52;
if (temp[m] == 0) {
break;
}
}
temp[m] = 1;
t = (i % 4) * 13 + (i % 4);
wdeck[t].suit = m / 13;
wdeck[t].face = m % 13;
}
}
int main()
{
int i;
struct card deck[52];
const char* suit[] = { "s","ss","sss","ssss" };
const char* face[] = { "A","K","Q","J","10","9","8","7","6","5","4","3","2","1" };
deal(deck);
for (i = 0; i < 52; i++)
{
if (i % 13 == 0) {
printf("Player %d:\n", i / 13 + 1);
}
printf("%s of %s\n", face[deck[i].face], suit[deck[i].suit]);
}
return 0;
}