Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/03/2014, 21:45
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Error con el buffer en archivo de texto

No sera por que en la ultima linea no has puesto un '\n' (ENTER).
Algunas funciones leen toda la linea hasta encontrar \n, y si justo en la ultima linea no pones el \n me parece que repite muchas veces esta ultima linea.
Me parece haber contestado a alguien hace poco con el mismo problema O.o
pensando bien el error puede ser por esa funcion getch(); que tienes al final.
No uso esta libreria y tu código no me ha imprimido nada doble al final
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4.  
  5.  
  6. int main () {
  7.  
  8.     FILE * archivo;
  9.     char temp[80];
  10.     int a;
  11.     int x, y, con, b;
  12.     x = 1;
  13.     y = 2;
  14.     b = 2;
  15.     con = 0;
  16.    
  17.    
  18.    
  19.     archivo = fopen ( "Lista.dat", "r" );
  20.    
  21.     if ( archivo == NULL ) {
  22.         printf ( "ERROR" );
  23.     }
  24.    
  25.     else {
  26.         system ( "cls" );
  27.         printf ( "NOMBRE\t\t" );
  28.         printf ( "APELLIDO\t\t" );
  29.         printf ( "EDAD\t\t" );
  30.         printf ( "DEPORTE\t\t" );
  31.         printf ( "CODIGO\t\t\n" );
  32.        
  33.        
  34.     }
  35.    
  36.     while ( 1 ) {
  37.         if ( fscanf ( archivo, "%s", temp ) == 1 ) {
  38.             con++;
  39.             printf ( "%s ", temp );
  40.             x += 16 ;
  41.            
  42.             if ( con == 5 ) {
  43.                 printf ( "\n" );
  44.                 con = 0;
  45.                 x += 1;
  46.                 y += b;
  47.                
  48.             }
  49.         }
  50.        
  51.         else {
  52.             if ( feof ( archivo ) ) {
  53.                 printf ( "\n\n\nFINAL DEL ARCHIVO" );
  54.             } else
  55.                 if ( ferror ( archivo ) ) {
  56.                     printf ( "Error de acceso" );
  57.                 } else {
  58.                     printf ( "Error inesperado" );
  59.                 }
  60.                
  61.             break;
  62.         }
  63.        
  64.     }
  65.    
  66.  
  67.     fclose ( archivo );
  68.     return 0;
  69.    
  70.    
  71. }
Este es el código... Como ves paso de rosca del conio este ><

Eso es lo que tenia en la Lista.dat:
Código txt:
Ver original
  1. pepe
  2. ceporro
  3. 47
  4. ninguno
  5. 007

Efectivamente habia un problema parecido con la función getline() que había postado aquí:
http://www.forosdelweb.com/f96/abrir...texto-1094279/
Echa un ojo si te interesa ^^

Última edición por vangodp; 24/03/2014 a las 22:06