52张牌,结构体数组

发牌函数,去掉大小王,一共52张牌

#define _CRT_SECURE_NO_WARNINGS
#include
#include



    char face[4] = {3,4,5,6};            //扑克牌花色ASCII码
    char num[13] = { 'A','2','3','4','5','6','7','8','9','T','J','Q','K'};//扑克牌点数
    
    //定义 扑克牌 结构体,包含花色和点数
    struct card
    {
        char face[100];    //花色
        char num[100];// 点数
    
    }card[52];


    //发牌函数
    void start()
    {
        for (int i = 0; i < 52; i++)
        {
            int j = 0, k = 0; //j控制花色,k控制点数
            if (i % 4 == 0)
                j = 0;
            if (i % 13 == 0)
                k = 0;
            while (j < 4 && k < 13)
            {
                strcpy(card[i].face,face[j]); //花色
                strcpy(card[i].num, num[k]);  //点数
                j++;
                k++;
                break;
            }
        }

    }



    int main()
    {
        start();
        for (int i = 0; i < 52; i++)
            printf("%c%c ",card[i].face,card[i].num);

        return 0;
    }





到strcpy函数那里就会报错

img

我的思路:一开始以为是strcpy函数的问题,就加了#define _CRT_SECURE_NO_WARNINGS,但还是报错

  • 花色如果显示方块,就是当前字体不支持,参考如下【C语言如何打印扑克牌花色(红桃、梅花、黑桃、方片)】;
    https://blog.csdn.net/Env1sage/article/details/128040886
  • 发牌那里,改了一下可以正常发了;每张牌 只有一个花色 和 点数,所以用字符就行,不需要字符数组
  • 代码修改如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
 
 
 
    char face[4] = {3,4,5,6};            //扑克牌花色ASCII码
    char num[13] = { 'A','2','3','4','5','6','7','8','9','T','J','Q','K'};//扑克牌点数
    
    //定义 扑克牌 结构体,包含花色和点数
    struct card
    {
        char face;    //花色
        char num;// 点数
    
    }card[52];
 
 
    //发牌函数
    void start()
    {
        int j = 0, k = 0; //j控制花色,k控制点数
        for (int i = 0; i < 52; i++)
        { 
            if ((i+1) % 4 == 0)
                j = 0;
            if ((i+1) % 13 == 0)
                k = 0;
            if (j < 4 && k < 13)
            {
                card[i].face = face[j]; //花色
                card[i].num = num[k]; //点数   
                j++;
                k++;
            }
        }
 
    }
 
    int main()
    {
        start();
        for (int i = 0; i < 52; i++)
            printf("%c %c\n",card[i].face,card[i].num);
 
        return 0;
    }