试着写一个简单的二十一点,但有一些我不明白的错误

时间:2012-04-07 16:56:35

标签: c++

我的代码存在问题。它给出了随机错误,我不知道为什么......我是C ++的新手,所以请耐心等待。>>

以下是有问题的代码:

while (!IsGameOver) {
    struct decktype deck = DeckInit();
    struct card card = PickACard(deck);
    PrintHand(TextCard(card));
}

无论我做什么,'PrintHand'的参数都会导致编译错误。这是两个功能。

char *TextCard(struct card &card) {
    char str[22];
    sprintf(str,"%s of %s (%d)",card_num[card.number],card_type[card.color],card.value);
    return str;
}


struct card PrintHand(char &cardtext) {
    struct card card;
    return card;
}

PrintHand尚未完成,但我不知道如何使其工作。基本上我想要做的是从TextCard中提供一个字符串以在PrintHand中使用。能否请你帮忙?非常感谢。

编辑:

目前的结构“卡片”看起来像这样。

struct card {
    int color;
    int number;
    int value;
    char *hand;
    int totalvalue;
};

错误是“无法将某些东西转化为某种东西”。对不起,我不能更具体:/

3 个答案:

答案 0 :(得分:0)

PrintHand期望引用char,但您(即TextCard)提供指向char的指针。

答案 1 :(得分:0)

有几个错误。

struct card PrintHand(char &cardtext) {
    struct card card;
    return card;
}

不使用cardtext,但真正的错误是从TextCard传递给它的值是char *,所以这应该是struct card PrintHand(char *cardtext)

然后:

char *TextCard(struct card &card) {
    char str[22];
    sprintf(str,"%s of %s (%d)",card_num[card.number],card_type[card.color],card.value);
    return str;
}

返回str,即堆栈上的str [0]的地址,以及TextCard返回后的消息,因此没有应该使用该返回值。 new函数中char数组的某些存储器返回它,并让调用者清理,或者从调用者传入char数组。

答案 2 :(得分:0)

您无法创建局部变量并从函数返回它。请改用 malloc new

char str[22];

char * str = (char *) malloc(22* sizeof(char)); OR
String str = "sometext" + "othertext";

我不知道,你在这里想做什么:

struct card PrintHand(char &cardtext) {
    struct card card;
    return card;
}

如果您只想打印文本,请执行以下操作:

void PrintHand(char * cardtext) { // * instead of &
   printf("%s", cardtext);
}