gpt4 book ai didi

c - 分配给具有数组类型的表达式并请求非结构或 union 中的成员

转载 作者:行者123 更新时间:2023-11-30 20:29:11 25 4
gpt4 key购买 nike

我试图声明我的结构类型的变量并出现此错误,代码是关于选举的。 CANDIDATO 是一个葡萄牙语单词,意思是候选人,我想我不需要翻译这么多

struct candidatos{
int numCandidato;
char nomeCandidado[10];
char partidoCandidato[3];
char cargoCandidato[1];
int votos;
float porcentagem;
};
struct candidatos listar[11];

int main(){
//CANDIDATO 01
listar[0].numCandidato = 111;
strcpy(listar[0].nomeCandidado, "ABC");
strcpy(listar[0].partidoCandidato, "ABC");
strcpy(listar[0].cargoCandidato, "ABC");
listar[0].votos = 0;
}

////ERROR START'S HERE


int iniciarVotacao(){

struct candidatos presidente;
struct candidatos deputado;
int votoPresidente = 0;
int votoDeputado = 0;
int i = 0;

presidente.nomeCandidado = 0; //°1 erro
deputado.numCandidato = 0; // erro

printf("Número do candidato para a Presidência => ");
scanf("%d", &votoPresidente);
printf("\nNúmero do candidato para Deputado => ");
scanf("%d", &votoDeputado);

for(i = 0 ; i < 11 ; i++){
if(listar[i].numCandidato == votoPresidente && listar.numCandidato < 50){
presidente = listar[i];
}// 2° erro acontece
if(listar[i].numCandidato == votoPresidente && listar.numCandidato > 1000){
deputado = listar[i];
}
}

最佳答案

我已经纠正了您关心的错误。以下是更正后的版本:

#include <stdio.h>
#include <string.h>

struct candidatos{
int numCandidato;
char nomeCandidado[10];
char partidoCandidato[4];
char cargoCandidato[4];
int votos;
float porcentagem;
} listar[11];

int main(){
//CANDIDATO 01
listar[0].numCandidato = 111;
strcpy(listar[0].nomeCandidado, "ABC");
strcpy(listar[0].partidoCandidato, "ABC");
strcpy(listar[0].cargoCandidato, "ABC");
listar[0].votos = 0;
}

int iniciarVotacao(){
struct candidatos presidente;
struct candidatos deputado;

int votoPresidente = 0;
int votoDeputado = 0;
int i = 0;

presidente.nomeCandidado[0] = '0';
deputado.numCandidato = 0;

printf("Número do candidato para a Presidência => ");
scanf("%d", &votoPresidente);
printf("\nNúmero do candidato para Deputado => ");
scanf("%d", &votoDeputado);

for(i = 0 ; i < 11 ; i++){
if(listar[i].numCandidato == votoPresidente && listar[i].numCandidato < 50){
presidente = listar[i];
}// 2° erro acontece
if(listar[i].numCandidato == votoPresidente && listar[i].numCandidato > 1000){
deputado = listar[i];
}
}
}

您的第一个错误 presidente.nomeCandidado = 0; 是因为您试图将整数值分配给数组指针。您必须事先为数组建立索引。

listar 是一个结构数组,根据您的代码 listar[i].numCandidato。您不能在稍后阶段将其仅仅视为一个结构,而不是一个结构数组。正如您在 for 循环中所做的那样,listar.numCandidato。这也必须改变。

您还错误地在 candidatos 结构定义中分别为 partidoCandidatocargoCandidato 声明了 3 个和 1 个索引。它们必须至少为 4,因为您要为它们分配 ABC。它由 3 个字符和一个为空终止符 \0 保留的额外字符组成,该字符表示数组的结束。

作为旁注。由于您在定义其使用的结构之后立即全局声明了 listar[11] 。为什么不直接在 candidatos 结构的右方括号之后声明它,而不是编写一个全新的行?正如我上面所做的那样。

关于c - 分配给具有数组类型的表达式并请求非结构或 union 中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com