Как я могу добавить строковое значение в структуру? - PullRequest
0 голосов
/ 04 апреля 2019

Я пишу программу о картах, но не могу добавить строку в структуру.Вот мой код:

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

typedef struct
{
    char szin[100];
    char ertek;
} Adat;

int main()
{
    Adat pakli[52];
    int a=0;
    char szimb[13]= {'A','2','3','4','5','6','7','8','9','1','J','Q','K'};
    char szinek[4][100]={"pikk","kor","treff","karo"};
    printf("%s\n",szinek[0]);
    for(int b=0; b<4; b++)
    {
        for(int c=0; c<13; c++)
        {
            Adat d={szinek[b],szimb[c]};
            pakli[a]=d;
            a++;
        }
    }
    printf("%s %c",pakli[0].szin,pakli[0].ertek);
    return 0;
}

Так что, пожалуйста, помогите мне, я много искал, но не получил никакого полезного ответа.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Я предполагаю, что компилятор уже предупреждал вас об этом

        Adat d={szinek[b],szimb[c]};

, потому что компилятор попытается выполнить

d.szin=szinek[b];

, а вы не можете напрямую выполнить array2 = array1,потому что в этом случае вы будете манипулировать адресами (char *) массивов, а не их значениями.

Это правильный способ инициализации вашего char [] и вашей структуры

for(int c=0; c<13; c++)
{
    Adat d;
    strcpy(d.szin,szinek[b]);
    d.ertek=szimb[c];
    pakli[a]=d;
    a++;
}

илив лучшую сторону

for(int c=0; c<13; c++)
    {
        strcpy(pakli[a].szin,szinek[b]);
        pakli[a].ertek=szimb[c];
        a++;
    }
1 голос
/ 04 апреля 2019
for(int c=0; c<13; c++)
{
        Adat d={.ertek=szimb[c],};
        strcpy(d.szin,szinek[b]);
        pakli[a]=d;
        a++;
}

или

for(int c=0; c<13; c++)
{
        pakli[a].ertek=szimb[c];
        strcpy(pakli[a].szin,szinek[b]);
        a++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...