Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/05/2014, 09:35
TriN
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Error de buffer al usar scanf

Hola amigos, ya he solucionado el problema, se me hizo mas entendible aplicar la funcion atoi, igualmente averiguare sobre otras funciones para convertir una variable char en int posteo el codigo y nuevamente muchas gracias.

Código C:
Ver original
  1. int agregar(void)
  2. {
  3. FILE *arc;
  4. int r,i=0;
  5. char ctemp[20];
  6. int ntemp;
  7. arc=fopen("lista.dat","ab");
  8.     if(arc==NULL)
  9.     {
  10.        
  11.     puts("Error");
  12.     return 1;
  13.        
  14.     }  
  15.     else
  16.     {
  17.  
  18.     puts("Numero del PC que desea agregar");
  19.     scanf("%s",&ctemp);
  20.    
  21.         if(atoi(ctemp)==0)
  22.         {
  23.         puts("Debe colocar solo numeros en el registro");
  24.         getch();
  25.         return 1;
  26.         }
  27.    
  28.     ntemp=atoi(ctemp);
  29.    
  30.                 if( (ntemp<1) || (ntemp>100))
  31.                 {
  32.                 puts("El numero de registro debe estar del 1 al 100");
  33.                 getch();
  34.                 system("cls");
  35.                 fclose(arc);
  36.                 return 1;
  37.                 }
  38.        
  39.        
  40.     fseek(arc,0,SEEK_END);
  41.     if(ftell(arc)!=0)
  42.     {
  43.         fclose(arc);
  44.         arc=fopen("lista.dat","rb");
  45.             if(arc==NULL)
  46.             {
  47.             puts("Error");
  48.             getch();
  49.             return 1;
  50.             }
  51.    
  52.         fread(&dat,sizeof(datos),1,arc);
  53.         while(!feof(arc))
  54.         {
  55.                 if(dat.n==ntemp)
  56.                 {
  57.                 puts("No  se pueden repetir los elementos del registro");
  58.                 getch();
  59.                 fclose(arc);
  60.                 return 1;
  61.                 }
  62.             fread(&dat,sizeof(datos),1,arc);
  63.         }
  64.    
  65.     }
  66.         fclose(arc);
  67.            
  68.     arc=fopen("lista.dat","ab");
  69.     if(arc==NULL)
  70.     {
  71.     puts("Error al abrir fichero");
  72.     exit(1);
  73.     }  
  74.  
  75.     dat.n=ntemp;
  76.    
  77.     puts("Marca ");
  78.     scanf("%s",&dat.marca);
  79.         puts("Modelo");
  80.     scanf("%s",&dat.modelo);
  81.         puts("Serial del case");
  82.     scanf("%s",&dat.cas);
  83.         puts("Serial del procesador");
  84.     scanf("%s",&dat.proc);
  85.         puts("Serial del monitor");
  86.     scanf("%s",&dat.mon);
  87.         puts("Serial del teclado");
  88.     scanf("%s",&dat.tecl);
  89.         puts("Serial del mouse");
  90.     scanf("%s",&dat.mou);
  91.         puts("Serial del camara");
  92.     scanf("%s",&dat.cam);
  93.         puts("Serial del regleta");
  94.     scanf("%s",&dat.reg);
  95.         puts("Serial de las cornetas");
  96.     scanf("%s",&dat.cor);
  97.         printf("Esta seguro de agregar esta PC al registro?");
  98.         puts("1.- SI    2.-NO");
  99.         scanf("%d",&r);
  100.             if(r==1)
  101.             {
  102.             fwrite(&dat,sizeof(datos),1,arc);
  103.             }
  104.            
  105.     }
  106.    
  107.     fclose(arc);
  108.     return 1;
  109. }