/* malloc.c demonstrates dynamic memory allocation in C */ #include #include #define BLKSIZ 10 main() { FILE *fp; char *buf, k; int bufsiz, i; // open file for reading if (( fp = fopen( "myfile.dat","r" )) == NULL ) { perror( "error opening myfile.dat" ); exit( 1 ); } // allocate memory for input buffer bufsiz = BLKSIZ; buf = (char *)malloc( sizeof(char)*bufsiz ); // read contents of file i = 0; while (( k = fgetc( fp )) != EOF ) { buf[i++] = k; if ( i == bufsiz ) { bufsiz += BLKSIZ; buf = (char *)realloc( buf,sizeof(char)*bufsiz ); } } if ( i >= bufsiz-1 ) { bufsiz += BLKSIZ; buf = (char *)realloc( buf,sizeof(char)*bufsiz ); } buf[i] = '\0'; // output file contents to the screen printf( "buf=[%s]\n",buf ); // close file fclose( fp ); } // end main()