Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/12/2014, 15:03
Banshi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Error en una funcion

Ya he corregido los fallos que comentas, para strtok no hace falta el include string.h, puesto que a mi me funciona sin el. De hecho funciona todo el programa a excepcion de la última función, porque he ido probandolo por partes. Sigo teniendo problemas en la última funcion y leer , leo los mensajes de error del compilador, pero no siempre los entiendo e intento buscar información, pero no siempre encuentro respuestas.

Asi está el código ahora mismo y los errores que me aparecen. Gracias por responder.

Código:
#include <stdio.h>
#include <stdlib.h>
#define TAM 50

typedef struct
{
    char nombre[30];
    char apellido1[30];
    int dni;
    char sexo;
    int edad;
} TPersona;

void cargar_txt(TPersona []);
void ver_persona(char [],TPersona []);
void persona_mayor(TPersona [],TPersona *);

int main()
{
    TPersona personas[TAM];
    TPersona mayor;
    cargar_txt(personas);
    char nombre[30];
    printf("La persona mayor de edad es:\n");
    persona_mayor(personas,&mayor);
    printf("\nVer datos de una persona\n");
    printf("Que persona quieres ver?\n");
    scanf("%s",nombre);
    ver_persona(nombre,personas);
    return 0;

}

void cargar_txt(TPersona personas[TAM])
{
    FILE *f;
    TPersona p;
    char *token;
    f=fopen("PERSONAS.txt","r");


    if(f==NULL)
    {
        printf("Error de apertura\n");
    }
    else
    {
        char cad[255];
        int cont=0,per=0;
        fgets(cad,255,f);
        while(!feof(f))
        {
            token = strtok(cad, ","); /*Separamos por espacios*/
            while (token != NULL)
            {
                switch(cont)
                {
                case 0:
                    strcpy(p.nombre,token);
                    break;
                case 1:
                    strcpy(p.apellido1,token);
                    break;
                case 2:
                    p.dni=atoi(token);
                    break;
                case 3:
                    p.sexo=token[0];
                    break;
                case 4:
                    p.edad=atoi(token);
                    break;
                }
                cont++;
                token = strtok(NULL,",");
            }
            personas[per]=p;
            cont=0;
            per++;
            fgets(cad,255,f);

        }
        fclose(f);
    }
}

void ver_persona(char nombre[30],TPersona personas[TAM])
{
    int i=0,enc=0;
    while(i<TAM && !enc)
    {
        if(strcmp(personas[i].nombre,nombre)==0)
        {

            printf("Nombre: %s\n",personas[i].nombre);
            printf("Apellido: %s\n",personas[i].apellido1);
            printf("DNI: %d\n",personas[i].dni);
            printf("Sexo: %c\n",personas[i].sexo);
            printf("Edad: %d\n",personas[i].edad);
            enc=1;

        }
        else
        {
            i++;
        }
    }
    if(enc==0)printf("%s no se encuentra en el fichero\n",nombre);
}

void persona_mayor(TPersona personas[TAM],TPersona *mayor)
{

    int i;
    int edad=personas[0].edad;
    printf("%d",personas[0].edad);
    for(i=0; i<TAM; i++)
    {
        if(personas[i].edad>=edad)
        {
            strcpy(mayor.nombre,personas[i].nombre);
            strcpy(mayor.apellido1,personas[i].apellido1);
            mayor.dni=personas[i].dni;
            strcpy(mayor.sexo,personas[i].sexo);
            mayor.edad=personas[i].edad;
        }

    }

} 
||=== Build: Debug in Entrega3 (compiler: GNU GCC Compiler) ===|
C:\Users\Francisco\Desktop\Tarea\Entrega3\main.c|| In function 'persona_mayor':|
C:\Users\Francisco\Desktop\Tarea\Entrega3\main.c|1 22|error: request for member 'nombre' in something not a structure or union|
C:\Users\Francisco\Desktop\Tarea\Entrega3\main.c|1 23|error: request for member 'apellido1' in something not a structure or union|
C:\Users\Francisco\Desktop\Tarea\Entrega3\main.c|1 24|error: request for member 'dni' in something not a structure or union|
C:\Users\Francisco\Desktop\Tarea\Entrega3\main.c|1 25|error: request for member 'sexo' in something not a structure or union|
C:\Users\Francisco\Desktop\Tarea\Entrega3\main.c|1 25|warning: passing argument 2 of 'strcpy' makes pointer from integer without a cast [enabled by default]|
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7. 1\..\..\..\..\include\string.h|45|note: expected 'const char *' but argument is of type 'char'|
C:\Users\Francisco\Desktop\Tarea\Entrega3\main.c|1 26|error: request for member 'edad' in something not a structure or union|
||=== Build failed: 5 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|