Ir ao conteúdo

Posts recomendados

Postado

Primeira vez que eu estou tentando montar um codigo com struct e ponteiros. Fiz todo o codigo pela logica, mas ele não compila. Pode ser que tenha erro na logica na hora de montar ou erros de escrita mesmo, não sei identificar.

O codigo tem o seguinte proposito : Preencher um struct com dados do usuario, depois apresentar eles na tela (cada um desses procedimentos feito por funçoes diferentes).

#include <stdio.h>

struct dados {
         char nome [100];
         int ano;
         int num;
         int pref [50];
     };
     
 int main ()
 
     
     struct preencher (struct dados x);
     struct dados caso1, caso2;
     int *p;
     
     preencher (struct dados caso1);
     
    struct dados ler (struct dados x);
    
    dador ler (struct dados p);
     
     return 0;
 }

struct dados preencher (struct dados x, *p){
    printf ("Digite o nome\n");
    scanf ("%c", &x.nome);
    printf ("Digite o ano");
    scanf ("%i", &x.ano);
    printf ("Digite a quantidade de numeros");
    scanf ("%i", x.num);
    for (int i=0; i<x.num; i++){
    printf ("Digite os numeros");
    scanf ("%i", &x.pref[i]);
    }
    
    p = &x;
};

struct dados ler (struct dados x){
    printf ("O nome é: ", x.nome);
    printf ("O ano é: ", x.ano);
    printf ("A quantidade de numeros e: ", x.num);
    for (int i=0; i<x.num; i++){
    printf ("O numeros: ", x.pref[i]);
    }
    
};

Alguém poderia me dizer onde estão os erros?

Postado

@Estudante0123  Olá. Por se tratar do primeiro exercício referente a struct e ponteiros recomendo, a princípio, fazer uma exercício mais simples.

Outro ponto: Para o código abaixo, é preciso fazer a alocação dinâmica do ponteiro *p, senão não vai ser possível a leitura dos dados

Segue o código e vê se ajuda (não entendi o q você quis fazer com "quantidade":

#include <stdio.h>
#include <stdlib.h>

struct dados {
    char nome [100];
    int ano;
    int num;
    int pref [50];
};

int main() {

    struct dados *p = NULL;

    // alocacao para o ponteiro p
    p = (struct dados *) malloc(sizeof(struct dados));

    printf ("Digite o nome: ");
    scanf ("%s", p->nome);
    fflush(stdin); // para limpar a sujeira do buffer

    printf ("Digite o ano: ");
    scanf ("%d", &p->ano);
    fflush(stdin);

    printf ("Digite a quantidade de numeros: ");
    scanf ("%d", &p->num);
    fflush(stdin);

    printf ("\nO nome e: %s\n", p->nome);
    printf ("O ano e: %d\n", p->ano);
    printf ("A quantidade de numeros e: %d\n\n", p->num);

    // libera a memória do ponteiro p que foi alocado
    free(p);

    // faz p apontar para nenhum lugar
    p = NULL;

    return 0;
}

 

adicionado 2 minutos depois

A princípio procure entender o que foi feito nesse código para depois fazer uso de funções e outros recursos

adicionado 15 minutos depois

Outro ponto: Se o teu interesse, como demonstrou ser, é de trabalhar com ponteiros, cedo ou tarde você vai ter q aprender sobre alocação dinâmica de memória.

Se deu pra entender o código q passei ok! Se ficou alguma dúvida fique a vontade para perguntar

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!