# /* * nc [-] */ /*)BUILD $(TKBOPTIONS) = { TASK = ...NCX } */ #ifdef DOCUMENTATION title nc Multi-column Output index Multi-column Output synopsis nc ncol [-linelength] description Nc reads the standard input, writing it to the standard output in columns. ( should range from 1 to 9.) If is missing, five columns will be output. If the linelength option is missing, an 80 column line will be assumed. Each column is, of course, .s / .s bytes wide. diagnostics None author David Conroy, Martin Minow bugs Why are there two programs to do the same thing? #endif #include #define LINESZ 80 int ncolumns = 5; int linelength = LINESZ; int tabstop[10] = { 0, 16, 32, 48, 64, LINESZ }; main(argc,argv) char **argv; { register int colnum,charnum; register char c; for (colnum = 1; colnum < argc; colnum++) { if (argv[colnum][0] == '-') linelength = atoi(&argv[colnum][1]); else ncolumns = atoi(&argv[colnum][0]); } charnum = linelength/ncolumns; for (colnum = 0; colnum < ncolumns; colnum++) tabstop[colnum] = colnum * charnum; tabstop[colnum] = linelength; colnum = 0; charnum = 0; while ((c=getchar()) != EOF) { if (c == '\n') { while (++colnum < ncolumns && charnum >= tabstop[colnum]); if (colnum >= ncolumns) { putchar('\n'); colnum = charnum = 0; } else while(charnum < tabstop[colnum]) { charnum++; putchar(' '); } } else { charnum++; putchar(c); } } putchar('\n'); }