#include <stdio.h>
#include <string.h>
typedef struct Pessoa{
char nome[150];
struct Datanasc{
int dia;
int mes;
int ano;
} datanasc;
char genero;
char pref;
} pessoa;
typedef struct Aresta{
int *pont;
int *pont2;
int peso;
} aresta;
void leitura(struct Pessoa c1){
printf("Entrei sua vagabunda\n");
int diaatual,mesatual,anoatual;
int numeroalunos;
int i;
scanf("%d/%d/%d",&diaatual,&mesatual,&anoatual);
scanf(" %d",&numeroalunos);
for(i=0;i<numeroalunos;i++){
scanf(" %[^\n]s", pessoa[i].nome);
scanf(" %d/%d/%d", &pessoa[i].datanasc.dia,&pessoa[i].datanasc.mes,&pessoa[i].datanasc.ano);
scanf(" %c %c", &pessoa.genero[i],&pessoa.pref[i]);
}
for(i=0;i<numeroalunos;i++){
printf(" %[^\n]s", pessoa[i].nome);
printf(" %d/%d/%d", pessoa[i].dia,pessoa[i].mes,pessoa[i].ano);
printf(" %c %c", pessoa[i].genero,pessoa[i].pref);
}
return;
}
int main(){
pessoa c1;
leitura(c1);
return 0;
}
我的代码有什么问题吗? 第 29、30、31、35、36、37 行出现错误 - “pessoa”之前的预期表达式 我的结构有问题。可能与我拥有的 [i] 有关
最佳答案
在您的代码中,pessoa
是一种类型,而不是变量名称。所以,你不可能写
scanf(" %[^\n]s", pessoa[i].nome);
您可能想要使用 pessoa
类型的变量。
话虽如此,C 使用传递值来传递函数参数。他们的方式是从 main()
传递 c1
(一个普通变量)并尝试在 leitura()
中填充它,这不会提供什么服务你可能想要。您需要从 main()
传递一个 pessoa
类型的数组,并在 leitura()
中使用它。
关于c - C 中的结构体和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260131/