word count program which also calculates column centimetres
of magazine (or newspaper) copy for would-be contributors.
Set up for Helvetica Medium phototype which is the body copy
used in Your Computer magazine, but can be easily changed
for others. Original structure taken from `The C Programming
Language', and substantially modified since then by Les Bell and
Matt Whelan...
if((fd = fopen(argv[1],buf)) == ERROR) {
printf("cannot open: %s\n",argv[1]);
exit();
}
inword = NO;
nl = nw = nc = 0;
while ((c = (getc(buf) & MASK)) != EOF)
{
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t' || c == 0x0d)
inword = NO;
else if (inword == NO) {
inword = YES;
++nw;
}
}
menu();
while (m != "5") { /* the m!=5 is irrelevant, but at
least sets up the loop */
printf("\n\nWhich would you like? : ");
m = getchar();
switch (toupper(m)) {
case '1':
printf("\n\n\n");
printf("\t\tnumber of chars = %d\n",nc);
printf("\t\tnumber of lines = %d\n",nl);
printf("\t\tnumber of words = %d\n",nw);
printf("\t\tcolumn centimetres = %d\n",nw/20);
break;
case '2':
printf("\n\n\n");
printf("\t\tnumber of chars = %d\n",nc);
printf("\t\tnumber of lines = %d\n",nl);
printf("\t\tnumber of words = %d\n",nw);
printf("\t\tcolumn centimetres = %d\n",nw/24);
break;
case '3':
printf("\n\n\n");
printf("\t\tnumber of chars = %d\n",nc);
printf("\t\tnumber of lines = %d\n",nl);
printf("\t\tnumber of words = %d\n",nw);
printf("\t\tcolumn centimetres = %d\n",nw/12);
break;
case '4':
printf("\n\n\n");
printf("\t\tnumber of chars = %d\n",nc);
printf("\t\tnumber of lines = %d\n",nl);
printf("\t\tnumber of words = %d\n",nw);
printf("\t\tcolumn centimetres = %d\n",nw/28);
break;
case 'X':
printf("\n\n\n");
printf("\t\tnumber of chars = %d\n",nc);
printf("\t\tnumber of lines = %d\n",nl);
printf("\t\tnumber of words = %d\n",nw);
printf("\n\nbibi\n");
exit();
case 'M':
menu();
break;
default:
putch(7);
printf("\n\nEnter 1-4 for measure, M for menu");
break;
}
}
}
menu()
{
printf(CLEARS); /* Hope you have screen-clear defined
in bdscio.h */
printf("\n\n\n\n");
printf("\t\tSELECT:\n");
printf("\n\n");
printf("\t\t<1> ---> 9/10 x 13 1/2 ems\n"); /*9point type, 1point
leading - the standard
3-column type used in the
magazine */
printf("\t\t<2> ---> 8/9 x 13 1/2 ems\n"); /*slightly smaller type
over same column with
- used for copy with
"pocket programs"*/
printf("\t\t<3> ---> 9/10 x 9 1/2 ems\n"); /*normal type size,
narrow column width
for news and "clinic"
pages */