gpt4 book ai didi

c - 如何在 C 中实现 strcpy() 和结构排序?

转载 作者:行者123 更新时间:2023-11-30 17:36:50 24 4
gpt4 key购买 nike

我正在 Ubuntu 中使用 GCC 制作一个小型 ANSI C 应用程序,它使用 strcpy() 和排序。

我的标题:

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

#define DECKSZ 52

typedef struct card {
enum {ACE=1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING} pips;
enum {SPADES, CLUBS, HEARTS, DIAMONDS} suit;
char cardName[20];
} card;

card deck[DECKSZ];

void initDeck(card[]);
void labelCards();
void shuffleDeck(card[]);
void swap(card*,card*);

我的主文件:

#include "CardOps.h"

void initDeck(card deck[]) {
int counter;
for (counter = 0; counter < DECKSZ; counter++) {
deck[counter].pips = (const)((counter % 13) + 1);
deck[counter].suit = (const)(counter / 13);
}
}

void labelCards() {
char pips[13][6] = {"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
char suits[4][9] = {"Spades","Hearts","Diamonds","Clubs"};
int i;
card cardName;
for (i = 0; i < DECKSZ; i++) {
strcpy(cardName, pips[i]);
strcpy(cardName, suits[i]);
}
}

int displayCards(int numCards) {
int i, countCards;
if (numCards > 52)
countCards = 52;
else
countCards = numCards;
for (i = 0; i < countCards; i++) {
printf(cardName);
}
return countCards;
}

void shuffleDeck(card deck[]) {
int i, j;
for (i = 0; i < DECKSZ; i++) {
j = rand() % DECKSZ;
swap(&deck[i], &deck[j]);
}
}

void SortCards() {

}

void swap(card *c1, card *c2) {
card temp;
temp = *c1;
*c1 = *c2;
*c2 = temp;
}

int main(void) {
initDeck(deck);
shuffleDeck(deck);
return EXIT_SUCCESS;
}

我正在尝试实现以下功能:

一个名为 LabelCards() 的函数,它以 void 和返回一个空值。使用两个枚举类型成员中的每一个Deck 为 cardName 分配一个字符串,即“Queen of Hearts”。 (你会想要创建一个字符串数组“Ace”、“Two”、“Three”等pips 和类似的数组用于处理字符串处理。)请注意,您需要使用 strcpy() 进行实际分配至卡名。

一个名为 DisplayCards() 的函数,它以一个参数作为参数整数N,并返回一个整数。该函数应该显示牌组中前 N 张牌的卡名。该函数返回显示的牌数,可能少于实际牌组数尺寸。例如,53张牌不能显示在一副52张牌中;我需要检查这一点并返回卡的实际数量显示。

一个名为 SortDeck() 的函数,它接受并返回一个 void。我的函数应该使用 swap() 算法来组织卡片牌组首先按其点数,然后根据其花色值。

有人可以帮助我让该功能正常运行吗?谢谢!

最佳答案

不要将deck的声明放在 header 中。您应该将其设为 extern,并将声明移至主文件中。

您的initDeck函数正在使用DECKSZ索引数组,该索引是常量且超出范围。您可能想改用counter

labelCards 正在尝试将整个数组复制到一张卡片中。类型不匹配,并且未使用循环变量。

displayCards 打印 cardName,它不存在。大概您想打印特定卡片的cardName

关于c - 如何在 C 中实现 strcpy() 和结构排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561035/

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