All pastes #403246 Raw Edit

Mine

public c v1 · immutable
·published 2007-03-20 08:06 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#if (defined(WIN32) || defined(_WINDOWS)) && !defined(__CYGWIN__)#define WIN#define CLEAR() system("cls")#include <windows.h>#else#define CLEAR() system("clear")#include <termios.h> #include <sys/ioctl.h>#include <unistd.h>#endif  void Read_File(char *c, int max, FILE * ptr); //prototype   int getMaxX(void){        #ifdef WIN        CONSOLE_SCREEN_BUFFER_INFO csbi;        if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi))                return (int) csbi.dwSize.X;        else            return 0;        #else        struct winsize size;        if (ioctl(STDIN_FILENO,TIOCGWINSZ, (char*) &size)<0)                 return 0;        else                return size.ws_col;        #endif}   int main(int argc, char *argv[]){   int i, max;  char * c;  FILE *cfptr;  cfptr = fopen(*(argv +1), "r");  max = getMaxX();  if(max == 0)  {  	printf("Error while tryong to determine the width of the window.\n");  }	  else if (cfptr == NULL)  {  	printf(" Error while opening the file\n");  }  else  {  	c = (char *) malloc(max*sizeof(char));  	printf("File opened succesfully. Contents:\n\n");  	Read_File(c, max, cfptr);  } fclose(cfptr);  return 0;}  void Read_File(char *c, int max, FILE * ptr){  int i;  int a=0;  char user;  long int * size= (long int *) malloc(sizeof(long int));  size[0] = 0;  do  {            printf("\nPress N to continue. P to go backward\n");            user = getchar();            getchar();             if((user == 'N') || (user == 'n'))            { 				CLEAR();                for (i = 0; (i < 20 )&& fgets (c, max, ptr) != NULL; i++ )                       printf("%s", c);                fflush(stdout); 				a++; 				if((a+1)>sizeof(a)/sizeof(int)) 				size = (long int*) realloc(size, sizeof(long int)*(a+1));                size[a]= ftell(ptr);             }            else if((user == 'P') || (user == 'p'))            {                 if (a > 1)                 {                 	 a -= 2;                 	 CLEAR();                     fseek(ptr, size[a], SEEK_SET);                     for (i = 0; (i < 20) && fgets (c, max, ptr) != NULL; i++)                     	printf("%s", c);                     fflush(stdout);                     a++;                 }              }              else if((user == 'q') || (user == 'Q'))              	exit(0);    }while(!feof(ptr));}