SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: danijr78 en Lunes 16 de Enero de 2006, 13:23

Título: Problema Con "strcmp"
Publicado por: danijr78 en Lunes 16 de Enero de 2006, 13:23
Tengo un problema al ejecutar este codigo. Creo que se produce en el STRCMP pero soy muyyyy novato...

int ValidarNombreNoRep(Nombre_Act nom) // char[50]
{
   FILE * FAct;
   Reg_Actividad RA; //registro con  un campo Nombre_Act==char[50]
   
   if((FAct=fopen("activi.dat","rb"))==NULL)
   {
      printf ("No se pudo abrir activi.dat");
      //exit(-1);
   }
   while(fread(&RA,sizeof(RA),1,FAct))      
      if(strcmp(RA.Nombre_Actividad,nom)==0) return 0;
   fclose(FAct);
   return 1;
}

Unhandled exception <exe> Access Violation...
->00401672   cmp         al,byte ptr [ecx]

Por favor es urgente alguna ayuda?
Gracias.
Título: Re: Problema Con "strcmp"
Publicado por: patitofeo en Lunes 23 de Enero de 2006, 10:15
Asi a primer vistazo

¿Te acordaste de incluir la cabecera de la libreria "string"?

#include <string.h>

puedes mostrar como has creado la estructura Reg_Actividad ?

 :hola: Saludos
Título: Re: Problema Con "strcmp"
Publicado por: bob esponja en Lunes 23 de Enero de 2006, 10:34
pones :  if(strcmp(RA.Nombre_Actividad,nom)==0) return 0;

y resulta que nom es Nombre_act? int ValidarNombreNoRep(Nombre_Act nom) // char[50]

terminas los strings con '\0' ?
que longitudes tienen?
Título: Re: Problema Con "strcmp"
Publicado por: silverfox en Lunes 23 de Enero de 2006, 10:51
Otra cuestión que he visto:

en el bucle:

Citar
while(fread(&RA,sizeof(RA),1,FAct))
    if(strcmp(RA.Nombre_Actividad,nom)==0)
        return 0;
fclose(FAct);
return 1;

si strcmp devuelve 0, haces return 0, pero no pasas por el fclose, así que dejas el fichero FAct abierto, espero que lo tengas en cuenta.



Un saludo.


Silverfox