/* wrap.c 30 June 2000 */ #include #include #include #include int main ( int argc, char *argv[] ); /******************************************************************************/ int main ( int argc, char *argv[] ) { /******************************************************************************/ /* Purpose: This program wraps long lines in a file. Discussion: This program reads a file, and tries to insert a carriage return after the current line is seen to contain at least 80 characters. Usage: wrap file1 file2 Modified: 25 September 2000 Author: John Burkardt */ #define MAX_LEN 80 int c; int col; FILE *filein; char filein_name[MAX_LEN]; FILE *fileout; char fileout_name[MAX_LEN]; int in_char; char input[MAX_LEN]; int out_char; /* There must be an input file and output file specified. */ if ( argc < 2 ) { printf ( "\n" ); printf ( "WRAP:\n" ); printf ( " Please enter the INPUT file name:\n" ); if ( fgets ( input, MAX_LEN, stdin ) != NULL ) { sscanf ( input, "%s", filein_name ); } else { printf ( "\n" ); printf ( "WRAP:\n" ); printf ( " Input error!\n" ); return ( EXIT_FAILURE ); } } else { strcpy ( filein_name, argv[1] ); } if ( argc < 3 ) { printf ( "\n" ); printf ( "WRAP:\n" ); printf ( " Please enter the OUTPUT file name:\n" ); if ( fgets ( input, MAX_LEN, stdin ) != NULL ) { sscanf ( input, "%s", fileout_name ); } else { printf ( "\n" ); printf ( "WRAP:\n" ); printf ( " Input error!\n" ); return ( EXIT_FAILURE ); } } else { strcpy ( fileout_name, argv[2] ); } /* Open the input and output files. */ filein = fopen ( filein_name, "rb" ); if ( filein == NULL ) { printf ( "\n" ); printf ( "WRAP:\n" ); printf ( " Cannot open the input file %s.\n", filein_name ); return ( EXIT_FAILURE ); } fileout = fopen ( fileout_name, "w" ); if ( fileout == NULL ) { printf ( "\n" ); printf ( "WRAP:\n" ); printf ( " Cannot open the output file %s.\n", fileout_name ); return ( EXIT_FAILURE ); } /* Transfer characters from the input file to the output file. */ in_char = 0; out_char = 0; col = 0; c = fgetc ( filein ); in_char = in_char + 1; while ( c != EOF ) { fputc ( c, fileout ); out_char = out_char + 1; if ( c == '\n' ) { col = 0; } else { col = col + 1; } if ( col >= 80 ) { c = '\n'; fputc ( c, fileout ); out_char = out_char + 1; col = 0; } c = fgetc ( filein ); in_char = in_char + 1; } in_char = in_char - 1; /* Close the files. */ fclose ( filein ); fclose ( fileout ); /* Report. */ printf ( "\n" ); printf ( "WRAP:\n" ); printf ( " The input file contains %d characters.\n", in_char ); printf ( " The output file contains %d characters.\n", out_char ); return ( EXIT_SUCCESS ); #undef MAX_LEN }