Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/06/2013, 14:11
Avatar de patilanz
patilanz
 
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 13 años
Puntos: 29
Error al repetir

Hola tengo la siguiente función:

Código C++:
Ver original
  1. void show(){
  2.     system("CLS");
  3.     fflush(stdin);
  4.     SetConsoleTextAttribute(h,20);
  5.     printf("El nombre: ");
  6.     char nombre[50];
  7.     SetConsoleTextAttribute(h,15);
  8.     gets_s(nombre);
  9.     sprintf_s(nombre,"%s.dat",nombre);
  10.     FILE *archivo;
  11.     fopen_s(&archivo,nombre,"rb+");
  12.     struct usuarios users2;
  13.     fread(&users2,sizeof(users2),1,archivo);
  14.     system("CLS");
  15.     SetConsoleTextAttribute(h,20);
  16.     printf("\n\tNombre: ");
  17.     SetConsoleTextAttribute(h,15);
  18.     printf("%s",users2.name);
  19.     SetConsoleTextAttribute(h,20);
  20.     printf("\n\tAno de nacimiento: ");
  21.     SetConsoleTextAttribute(h,15);
  22.     printf("%d",users2.nacimiento);
  23.     SetConsoleTextAttribute(h,20);
  24.     printf("\n\tAnos: ");
  25.     SetConsoleTextAttribute(h,15);
  26.     printf("%d",users2.anos);
  27.     SetConsoleTextAttribute(h,20);
  28.     printf("\n\tPais: ");
  29.     SetConsoleTextAttribute(h,15);
  30.     printf("%s",users2.pais);
  31.     SetConsoleTextAttribute(h,20);
  32.     printf("\n\tInfo: ");
  33.     SetConsoleTextAttribute(h,15);
  34.     printf("%s",users2.info);
  35.     printf("\n\n\tClick the boton \"a\" for see more and any other for back.");
  36.     char caracter;
  37.     caracter=_getch();
  38.     if(caracter=='a' || caracter=='A'){
  39.         show();
  40.     }else{
  41.         menuPrincipal();
  42.     }
  43. }

Cuando se ejecuta por primera hace todo bien(muestra los datos del archivo binario.) Pero si el usuario pulsa el boton "a" para repetir me muestra el siguiente error:

Código error:
Ver original
  1. Debug Assertion Failed!
  2.  
  3. Program: ....
  4. FIle: fread.c
  5. Line: 102
  6.  
  7. Expression:(stream!=NULL)
  8. ...

Creo que es porque se llena la variable nombre[50] y luego no hay espacio. Solo creo, no estoy nada seguro.

Como solucionar lo?

Saludos