Arrays C使用指向字符的指针值打印数组值 typedef结构{ 字符*值; 字符*类型; }卡片; 信用卡[52]; void initializeCards(){ 字符类型[4][10]={“黑桃”、“梅花”、“红心”、“钻石”}; 字符值[13][1]={“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“B”、“D”、“K”}; 对于(int i=0;i

Arrays C使用指向字符的指针值打印数组值 typedef结构{ 字符*值; 字符*类型; }卡片; 信用卡[52]; void initializeCards(){ 字符类型[4][10]={“黑桃”、“梅花”、“红心”、“钻石”}; 字符值[13][1]={“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“B”、“D”、“K”}; 对于(int i=0;i,arrays,c,pointers,struct,Arrays,C,Pointers,Struct,您的数组值没有足够的元素来存储终止的空字符,但稍后您将尝试将其打印为字符串(由空字符终止的字符序列) 分配足够的元素,以便数组可以容纳终止的空字符 错行: typedef struct { char* value; char* type; } CARD; CARD cards[52]; void initializeCards() { char types[4][10] = {"Spade", "Club", &quo

您的数组
没有足够的元素来存储终止的空字符,但稍后您将尝试将其打印为字符串(由空字符终止的字符序列)

分配足够的元素,以便数组可以容纳终止的空字符

错行:

 typedef struct {
   char* value;
   char* type;
 } CARD;
 CARD cards[52];


 void initializeCards() { 

     char types[4][10] = {"Spade", "Club", "Hearts", "Diamonds"};
     char values[13][1] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "B", "D", "K"};

     for (int i = 0; i < 4; i++) {
        for (int e = 0; e < 13; e++) {
           cards[i*13 + e].type = types[i];
           cards[i*13 + e].value = values[e];
        }
     }

     //This prints all sorts of weid characters.
     for (int i=0; i<52; i++) {
         printf("%s %s\n", cards[i].type, cards[i].value);
     } 
 }//initializeCards.
更正:

char values[13][1] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "B", "D", "K"};

哇,谢谢你,我已经看了一个多小时了,只要把a从1改为3,我就接受9分钟内解决的问题
char values[13][3] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "B", "D", "K"};