SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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.
-
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
-
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?
-
Otra cuestión que he visto:
en el bucle:
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