Ir ao conteúdo
  • Cadastre-se

Struct Matriz


Posts recomendados

Fiz o seguinte código,ele não apresentou nenhum erro mas quando coloco para rodar so pede o nome,email,id uma vez e depois o programa termina, gostaria de saber qual é o erro,agradeço desde já!

#include <stdio.h>#include <stdlib.h>struct pessoa{    char *nome;    char *email;    int ID;};typedef struct pessoa ser;int main(){    ser cadastro[2][2];    int i,j;    for(i=0;i<2;i++)    {        for (j=0;j<2;i++)        {            printf("Nome: [%d][%d]",i,j);            gets(cadastro[i][j].nome);            printf("email: [%d][%d]",i,j);            gets(cadastro[i][j].email);            printf("ID: [%d][%d]",i,j);            scanf("%d",&cadastro[i][j].ID);            printf("\n");        }        printf("\n");    }    printf("\n");    for(i=0;i<2;i++)    {        for (j=0;j<2;i++)        {            printf("Nome: %s",cadastro[i][j].nome);            printf("email: %s",cadastro[i][j].email);            printf("ID: %i",cadastro[i][j].ID);        }    }}
Link para o comentário
Compartilhar em outros sites

Anne esta não é a forma padrão de reservar memoria: char *nome. Isso é uma cadeia literal de dados, e o espaço para isso é reservado em tempo de compilação, o sistema vai alojar ele em um lugar pouco otimizado, não devemos alterar isso. Para reservar memoria de forma correta devemos especificar o tamanho dela, pois essa memoria será designada em tempo de execução, ou seja quando nosso programa rodar ele vai pedir uma x quantidade de memoria ao sistema operativo. Então sendo assim sua estrutura deveria ser:

struct pessoa {    char nome[100];    char email[100];    int ID;};

De igual modo não entendo por que você esta declarando uma matriz de estruturas ja que com um simples array o problema ficaria resolvido, ser cadastro[2] ou ser cadastro[4];

 

 

E ainda tem outro erro muito grave:

    for ( i = 0; i < 2; i++ ) {        for ( j = 0; j < 2; i++ ) {

A ver si adivinhas?XD

 

Em nenhum momento você incrementa j, porém a i você incrementa 2 vezes. Não seria???

    for ( i = 0; i < 2; i++ ) {        for ( j = 0; j < 2; j++ ) {

Tem que ser precisamente uma matriz? Ou pode ser um array de vetores?

 

De todas formas te deixo aqui ele mais ou menos arrumado:

#include <stdio.h>#include <stdlib.h>struct pessoa {    char nome[100];    char email[100];    int ID;};typedef struct pessoa ser;int main() {    ser cadastro[2][2];    int i, j;        for ( i = 0; i < 2; i++ ) {        for ( j = 0; j < 2; j++ ) {            printf ( "Nome: [%d][%d]", i, j );            scanf("%99[^\n]%*c", cadastro[i][j].nome );                        printf ( "email: [%d][%d]", i, j );            scanf("%99[^\n]%*c", cadastro[i][j].email );                        printf ( "ID: [%d][%d]", i, j );            scanf ( "%d%*c", &cadastro[i][j].ID );                        printf ( "\n" );        }                printf ( "\n" );    }        printf ( "\n" );        for ( i = 0; i < 2; i++ ) {        for ( j = 0; j < 2; j++ ) {            printf ( "Nome: %s ", cadastro[i][j].nome );                        printf ( "email: %s ", cadastro[i][j].email );                        printf ( "ID: %i\n", cadastro[i][j].ID );        }        printf ( "\n\n");    }}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...