如何从普通数组复制到结构数组?

时间:2017-03-18 03:56:30

标签: c

我有这段代码,但在编译时会给我一些错误。

[错误]预期标识符或'('之前' ['令牌

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

//functions
void createdeck();


//structures
typedef struct card{
    int val;
    char face;
    char suit;
}deck[52];

//global variables
const char suits[4] = { 'D', 'C', 'H', 'S' };
const char face[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'X', 'J', 'Q', 'K', 'A' };

int main()
{
    createdeck();
}

void createdeck()
{
    int ctr1,ctr2,count = 0;

    for (ctr1 = 0; ctr1 < 4;ctr1++)
    {
        for (ctr2 = 0;ctr2 < 13; ctr2++)
        {
            deck[count].val = count + 1;
            deck[count].face = face[ctr2];
            deck[count].suit = suit[ctr];
            count = count + 1;
        }
    }
}

[错误]预期标识符或&#39;(&#39;之前&#39; [&#39;令牌 这就是编译器所说的

deck[count].val = count + 1;
deck[count].face = face[ctr2];
deck[count].suit = suit[ctr];

这些是突出显示的错误。 请赐教。我还是个初学者。

1 个答案:

答案 0 :(得分:0)

这是因为deck是类型,而不是变量(没有为其初始化内存)。

我建议不要使用typedef,因为它们会混淆类型并且会使事情变得更加混乱(它们经常被滥用),并且只在{{1}中声明一个名为deck的变量功能,如:

createdeck()

请注意,您已将//structures struct card{ int val; char face; char suit; }; ... void createdeck() { struct card deck[52]; 错误地列为<{1}}

suits

该行上的suit也不作为变量存在。