Blob


1 /*
2 * 1-22. Write a program to "fold" long input lines into two or more shorter lines after the last non-blank character that occurs before the n-th column of input. Make sure your program does something intelligent with very long lines, and if there are no blanks or tabs before the specified column.
3 */
5 #include <stdio.h>
6 #define WIDTH 80
7 #define TABSTOP 8
9 int strln(char s[]);
11 main()
12 {
13 int c, i, ci;
14 char current[WIDTH];
15 int len;
17 ci = i = 0;
19 while ((c = getchar())!=EOF) {
20 if (c == ' ') {
21 current[ci] = '\0';
22 len = strln(current)+1;
23 if (i+len < WIDTH) {
24 printf("%s%c", current, c);
25 i += len;
26 } else {
27 printf("\n%s%c", current, c);
28 i = len;
29 }
30 ci = 0;
31 } else if (c == '\n') {
32 current[ci] = '\0';
33 printf("%s%c", current, c);
34 ci = i = 0;
35 } else if (c == '\t') {
36 len = strln(current)+TABSTOP;
37 current[ci] = '\0';
38 if (i+len < WIDTH) {
39 printf("%s%c", current, c);
40 i += len;
41 } else {
42 printf("\n%s%c", current, c);
43 i = len;
44 }
45 ci = 0;
46 } else {
47 current[ci] = c;
48 ++ci;
49 }
50 }
51 }
52 int strln(char s[])
53 {
54 int i;
55 for (i=0; s[i] != '\0'; ++i)
56 ;
57 return i;
58 }