gpt4 book ai didi

C - 想要将 struct 类型的函数放在单独的 .c 文件中

转载 作者:太空宇宙 更新时间:2023-11-04 08:18:14 24 4
gpt4 key购买 nike

所以我的这段代码有一个结构和一堆函数,我想将这些函数(至少)放在一个单独的 .c 文件中。但是,当我这样做时,它不再识别我拥有的结构卡类型。我该怎么办?

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

struct card {
int suit;
int value;
};

const char *suitName( int suitNum)
{
switch (suitNum) {
case 1: return "spades";
case 2: return "clubs";
case 3: return "hearts";
case 4: return "diamonds";
}

return "(invalid suit)";
}

struct card makeCard(int suit, int value) {

struct card tempCard;
tempCard.suit = suit;
tempCard.value = value;

return tempCard;
}

struct card *createDeck()
{
const size_t count = 52;
struct card *deck;


/* Allocate new deck of 'count' cards. */
deck = malloc(count * sizeof deck[0]);
if (!deck) {
fprintf(stderr, "createDeck(): Out of memory!\n");
exit(EXIT_FAILURE);
}
int i = 0;
struct card *deckArrayPtr = deck;
for (int suit = 1; suit < 5; suit++)
{
{
for (int value = 1; value < 14; value++) {
deck[i] = makeCard(suit, value);
i++;
}
}
}
return deck;
}

void shuffleDeck(struct card *deck) {
int cardSwitch1, cardSwitch2;
struct card temp;
cardSwitch1 = (rand() % 52);
cardSwitch2 = (rand() % 52);
temp = deck[cardSwitch1];
deck[cardSwitch1] = deck[cardSwitch2];
deck[cardSwitch2] = temp;
}


int main()
{
srand((unsigned int)time(NULL)); //initializing srand

struct card *deckAr = createDeck(); //creating the struct card deck array

for (int i = 0; i < 5000; i++)
{
shuffleDeck(deckAr);
}
for (int a = 0; a < 52; a++) {
//printf("%d of %s\n", deckAr[a].value, suitName(deckAr[a].suit));
printf("%d of %s\n", deckAr[a].value, suitName(deckAr[a].suit));
}
return 0;
}

最佳答案

编写声明类型和函数原型(prototype)的头文件

我的类型.h

struct card {
int suit;
int value;
};

const char *suitName( int suitNum);
struct card makeCard(int suit, int value);
...

编写一个 .c 文件来实现您的功能(包括您的头文件)

myfunc.c

#include "mytypes.h"

const char *suitName( int suitNum)
{
...
}
...

最后是你的主程序的文件

主.c

#include "mytypes.h"

int main()
{
...
}

关于C - 想要将 struct 类型的函数放在单独的 .c 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34591278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com