c - C 中的结构体和指针

标签 c arrays struct

#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/

相关文章:

c++ - 用于绘制 C/C++ 结构、指针等的快速草图工具

正确的#if 功能

c - 两个数组的总和

c - 用于并行的 OpenMP get_num_threads

c++ - 按字母顺序排列字符串数组(甚至 *ptr)

Java - 如何将值从 switch 语句插入到数组

go - 尝试在 Go 中测试一个空的自引用结构值

c - 如何从结构中读取数据指针?

C regex.h 最短匹配

C程序调用一个字符串到int函数,我无法转换输入