#define ANCHO 80; typedef struct PTexto { char *LineaC; }; void RefreshTexto( PTexto *PT, int NLineas, int NLinicio ) { int i, j; for ( i = 0; i < NLinicio; i++ ) PT++; for ( i = NLinicio, j = 0; i < NLineas && j < 21; i++, j++ ) { gotoxy( 2, j ); printf( "%s", PT -> LineaC ); PT++; } } void PTextos( char *file ) { FILE *PFio; PTexto *PTxt, *p_aux; int NumL; if ( ( PFio = fopen( file, "rw+" ) ) == NULL ) { // No se puede abrir el fichero -ERROR- return; } else { // Seguimos // No hay memoria -ERROR- return; p_aux = PTxt; NumL = 1; while ( !eof( PFio ) ) { NumL++; if ( ( PTxt = (PTexto *)calloc( sizeof(PTexto *), NumL ) ) == NULL ) { // -ERROR return; } if ( p_aux -> LineaC = (char *)calloc( sizeof( char ), 80 ) ) == NULL ) { // -ERROR- return; } else { // Leemos el caracter fscanf( PFio, "%80s", p_aux -> LineaC ); } p_aux = &paux[NumL]; }; RefreshTexto( PTxt, NumL, 0 ); NLvisual = 0; NLvistras = 0; ok = 0; while ( !ok ) { while( !kbhit() ); switch( getch() ) { // Teclas especiales case 0: switch( getch() ) { }; break; default: // Editamos la linea Captura( 2, NLvisual, PTxt[NLvisual+NLvistras].PLinea ); } }; } }