我正在使用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和
返回一个空值。使用两个枚举类型成员中的每一个
卡片组为cardName分配一个字符串,即“红心皇后”。 (您会
想要创建一个字符串数组“ Ace”,“ Two”,“ Three”等
点和一组类似的数组来处理字符串处理。)
请注意,您需要使用strcpy()进行实际分配
到cardName。
名为DisplayCards()的函数将一个
整数N,并返回整数。该功能应显示
cardName卡片组中前N张卡片的名称。该函数返回
显示的纸牌数量,可能少于实际的纸牌
尺寸。例如,不能在52张牌堆中显示53张牌;一世
需要检查并返回实际卡数
显示。
一个称为SortDeck()的函数,该函数获取并返回一个void。我的
函数应该使用swap()算法来组织卡片
首先根据他们的点子,然后根据他们的西服值。
有人可以帮我使功能正常工作吗?谢谢!
最佳答案
不要在标题中放置deck
的声明。您应该将其设为extern
,并将声明移至主文件中。
您的initDeck
函数正在使用DECKSZ
对其进行索引,该常量是常量且超出范围。您可能打算改用counter
。labelCards
试图将整个阵列复制到单个卡中。类型不匹配,并且不使用循环变量。displayCards
打印cardName
,它不存在。大概是要打印特定卡的cardName
。
关于c - 如何在C中实现strcpy()和对结构进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22561035/