分配char时出现struct错误

问题描述 投票:1回答:3

我有这个错误:

警告:赋值从指针生成整数而没有强制转换[-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;
c
3个回答
1
投票

您正在尝试将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}};

2
投票
TabPart[0].nom[20]="alami";

你应该替换它

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

TabPart.nom [0]是char,而“alami”是char*(即pointer to a char)。

您不能将char分配给pointer to a char,因为它们不兼容。


1
投票

你不能只在一个带有=符号的结构中指定一个字符。您需要使用类似strcpy的函数将其复制到char数组中。

© www.soinside.com 2019 - 2024. All rights reserved.