分配给具有数组类型的表达式并请求不是结构或联合的成员
Assignment to expression with array type AND request for member in something not a structure or union
我正在尝试声明我的结构类型的变量并出现此错误,代码是关于选举的。 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[i].numCandidato
,listar
是一个结构数组。您不能在稍后阶段将其仅视为一个结构,而不是一个结构数组。正如您在 for 循环中所做的那样,listar.numCandidato
。那也必须改变。
您还错误地在 candidatos
结构定义中分别为 partidoCandidato
和 cargoCandidato
声明了 3 个和 1 个索引。它们必须至少为 4,因为您要分配它们 ABC
。其中包含 3 个字符和一个为空终止符保留的额外字符 [=19=]
,表示数组的结尾。
作为旁注。由于您在全局声明 listar[11]
后立即定义了它使用的结构。为什么不直接在 candidatos
结构的右方括号之后声明它,而不是写一个新行?正如我上面所做的。
我正在尝试声明我的结构类型的变量并出现此错误,代码是关于选举的。 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[i].numCandidato
,listar
是一个结构数组。您不能在稍后阶段将其仅视为一个结构,而不是一个结构数组。正如您在 for 循环中所做的那样,listar.numCandidato
。那也必须改变。
您还错误地在 candidatos
结构定义中分别为 partidoCandidato
和 cargoCandidato
声明了 3 个和 1 个索引。它们必须至少为 4,因为您要分配它们 ABC
。其中包含 3 个字符和一个为空终止符保留的额外字符 [=19=]
,表示数组的结尾。
作为旁注。由于您在全局声明 listar[11]
后立即定义了它使用的结构。为什么不直接在 candidatos
结构的右方括号之后声明它,而不是写一个新行?正如我上面所做的。