struct erreur при назначении символа - PullRequest
1 голос
/ 19 марта 2019

У меня есть эта ошибка:

предупреждение: присвоение делает целое число из указателя без приведения [-Wint-conversion] TabPart[0].nom[20]="alami";

при компиляции этого кода:

typedef struct
{
  char nom[20];
  char prenom[30];
  int dej;
  int din;
  int hot;
  int num;
}Participant;

Participant TabPart[10];
TabPart[0].nom[20]="alami";
TabPart[0].prenom[30]="iliass";
TabPart[0].dej=0;
TabPart[0].din=1;
TabPart[0].hot=2;
TabPart[0].num=1;

Ответы [ 3 ]

2 голосов
/ 19 марта 2019
TabPart[0].nom[20]="alami";

Вы должны заменить это на

strcpy(TabPart[0].nom, "alami");

TabPart.nom [0] представляет собой char, в то время как "alami" представляет собой char* (т.е. pointer to a char).

Вы не можете назначить char a pointer to a char, так как они не совместимы.

1 голос
/ 20 марта 2019

Вы пытаетесь присвоить char * элементу массива char, а это не то, что вы хотите сделать. Вы можете использовать strcpy, чтобы скопировать его в массив, или вместо этого вы можете инициализировать массив символов строковым литералом.

typedef struct
{
  char nom[20];
  char prenom[30];
  int dej;
  int din;
  int hot;
  int num;
}Participant;

Participant TabPart[10] = {{"alami", "iliass", 0, 1, 2, 1}};

В качестве альтернативы, вы можете использовать назначенный инициализатор, чтобы быть более точным в отношении того, что представляет собой каждое поле:

Participant TabPart[10] = {{ .nom = "alami", .prenom = "iliass", .dej = 0,
        .din = 1, .hot = 2, .num = 1}};
1 голос
/ 20 марта 2019

Вы не можете просто назначить символ в структуре со знаком =. Вам необходимо использовать функцию типа strcpy, чтобы скопировать ее в массив char.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...