1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Erro, linguagem C.

Discussão em 'Programação' iniciada por Sparxxx, 9 de Março de 2009. (Respostas: 0; Visualizações: 505)

  1. Código:
    typedef struct _Professores{
        int Tamanho;
        int *Capacidade;
        int *Identificador;
        char *Nome[100];
        char *Mail[50];
        int *NumeroAvaliacoes;
        float *Avaliacoes; 
    } infoProfessores, *apProfessores;
    
    
    Professores criaProfessores(int maxT){
        apProfessores aux;
        aux = (apProfessores) malloc (sizeof(infoProfessores));
        if(aux==NULL) return NULL;
        aux->Identificador = (int*) malloc(maxT*sizeof(int));
        aux->Nome[100] = (char*) malloc(maxT*sizeof(char));
        aux->Mail[50] = (char*) malloc(maxT*sizeof(char));
        aux->NumeroAvaliacoes = (int*) malloc(maxT * sizeof(int));
        aux->Avaliacoes = (float*)malloc(maxT*sizeof(float));
        aux->Capacidade = maxT;
        aux->Tamanho = 0;
    return (Professores) aux;
    }
    
    
    int AddDocente(Professores p,int Identificador,char *Nome,char *Mail){
    apProfessores aux = (apProfessores) p;
    int n;
    for(n=0; n <= aux->Tamanho ; n++)
    if (Identificador == (&aux->Identificador)[n])
    return 0;
    (&aux->Identificador)[aux->Tamanho] = Identificador;
    (&aux->Nome[100])[aux->Tamanho]=Nome;
    (&aux->Mail[50])[aux->Tamanho]=Mail;
    printf (" Nome %s \n Mail %s \n\n Nome[0] %s \n Mail[0] %s \n identificador %d", (&aux->Nome[100])[aux->Tamanho], (&aux->Mail[50])[aux->Tamanho],(&aux->Nome[100])[0], (&aux->Mail[50])[0], (&aux->Identificador)[0]);
    aux->Tamanho++;
    return 1;
    }

    Boa noite pessoal, nesta minha ultima função AddDocente sabem-me explicar pk k no meu printf que eu fiz para testar os erros nao me está a dar a posiçao 0 do nome e mail?

    Ou seja, neste meu programa e' para adicionar pessoas na minha struct, e eu adiciono a 1ª e as variaveis (&aux->Nome[100])[0] , (&aux->Mail[50])[0] e (&aux->Identificador)[0] dao correctamente essa tal 1º pessoa que adiciono. Ao colocar a 2ª pessoa a variavel (&aux->Identificador)[0] da-me correctamente o identificador da 1ª pessoa que eu adiciono, mas as variaveis (&aux->Nome[100])[0] , (&aux->Mail[50])[0] ja' nao me os dados da1ª pessoa mas sim da ultima que eu adiciono!

    Os dados que eu pesso sao Identificado , Nome e Mail.

    Sabem explicar-me porque este erro, eu penso que estou a trabalhar mal com strings, mas ja dei tantas voltas e nao consigo perceber mesmo o que se passa!

    Desculpem o testamento, e o trabalho... Agradeço imenso a vossa ajuda preciosa!

    Abraço
     

Partilhar esta Página