• Domingo 17 de Noviembre de 2024, 22:43

Autor Tema:  Problema Con "strcmp"  (Leído 1468 veces)

danijr78

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Problema Con "strcmp"
« en: Lunes 16 de Enero de 2006, 13:23 »
0
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.

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Problema Con "strcmp"
« Respuesta #1 en: Lunes 23 de Enero de 2006, 10:15 »
0
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

bob esponja

  • Miembro MUY activo
  • ***
  • Mensajes: 411
    • Ver Perfil
    • http://marianoguerra.blogspot.com
Re: Problema Con "strcmp"
« Respuesta #2 en: Lunes 23 de Enero de 2006, 10:34 »
0
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?

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Problema Con "strcmp"
« Respuesta #3 en: Lunes 23 de Enero de 2006, 10:51 »
0
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