/* chario.c - Don Yang (uguu.org) Correctness test for lineio.c 03/10/04 */ #include int main(int argc, char **argv) { FILE *infile, *outfile; size_t linecount, maxlinesize, charcount; int i, j; linecount = maxlinesize = 0; infile = stdin; outfile = stdout; if( argc > 1 ) { if( (infile = fopen(argv[1], "rb")) == NULL ) return printf("Can not open %s\n", argv[1]); if( argc > 2 ) { if( (outfile = fopen(argv[2], "wb+")) == NULL ) { (void)fclose(infile); return printf("Can not create %s\n", argv[2]); } } } charcount = 0; while( (i = fgetc(infile)) != EOF ) { (void)fputc(i, outfile); if( i == (int)'\n' ) { if( maxlinesize < charcount ) maxlinesize = charcount; charcount = 0; linecount++; } else if( i == (int)'\r' ) { if( (j = fgetc(infile)) != (int)'\n' ) (void)ungetc(j, infile); else (void)fputc(j, outfile); if( maxlinesize < charcount ) maxlinesize = charcount; charcount = 0; linecount++; } else { charcount++; } } if( charcount > 0 ) { if( maxlinesize < charcount ) maxlinesize = charcount; linecount++; } printf("%u lines, longest line = %u characters\n", (unsigned)linecount, (unsigned)maxlinesize); (void)fclose(infile); (void)fclose(outfile); return 0; }