Blame


1 5dc21454 2023-07-14 jrmu /* 1-16. Revise the main routine of the longest-line program so it will
2 5dc21454 2023-07-14 jrmu * correctly print the length of arbitrarily long input lines, and as much
3 5dc21454 2023-07-14 jrmu * as possible of the text.
4 5dc21454 2023-07-14 jrmu */
5 5dc21454 2023-07-14 jrmu
6 5dc21454 2023-07-14 jrmu /* MAXLINE has been reduced for easier testing */
7 5dc21454 2023-07-14 jrmu #include <stdio.h>
8 5dc21454 2023-07-14 jrmu #define MAXLINE 10
9 5dc21454 2023-07-14 jrmu
10 5dc21454 2023-07-14 jrmu int getlin(char line[], int maxline);
11 5dc21454 2023-07-14 jrmu void copy(char to[], char from[]);
12 5dc21454 2023-07-14 jrmu
13 5dc21454 2023-07-14 jrmu main()
14 5dc21454 2023-07-14 jrmu {
15 5dc21454 2023-07-14 jrmu int len; /* current line length */
16 5dc21454 2023-07-14 jrmu int max; /* maximum length seen so far */
17 5dc21454 2023-07-14 jrmu char line[MAXLINE]; /* current input line */
18 5dc21454 2023-07-14 jrmu char longest[MAXLINE]; /* longest line saved here */
19 5dc21454 2023-07-14 jrmu
20 5dc21454 2023-07-14 jrmu max = 0;
21 5dc21454 2023-07-14 jrmu while ((len = getlin(line, MAXLINE)) > 0)
22 5dc21454 2023-07-14 jrmu if (len > max) {
23 5dc21454 2023-07-14 jrmu max = len;
24 5dc21454 2023-07-14 jrmu copy(longest, line);
25 5dc21454 2023-07-14 jrmu }
26 5dc21454 2023-07-14 jrmu if (max > 0) /* there was a line */
27 5dc21454 2023-07-14 jrmu printf("%d chars: %s", max, longest);
28 5dc21454 2023-07-14 jrmu return 0;
29 5dc21454 2023-07-14 jrmu }
30 5dc21454 2023-07-14 jrmu
31 5dc21454 2023-07-14 jrmu int getlin(char s[], int lim)
32 5dc21454 2023-07-14 jrmu {
33 5dc21454 2023-07-14 jrmu int c, i;
34 5dc21454 2023-07-14 jrmu
35 5dc21454 2023-07-14 jrmu for (i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
36 5dc21454 2023-07-14 jrmu s[i] = c;
37 5dc21454 2023-07-14 jrmu if (c == '\n') {
38 5dc21454 2023-07-14 jrmu s[i] = c;
39 5dc21454 2023-07-14 jrmu ++i;
40 5dc21454 2023-07-14 jrmu }
41 5dc21454 2023-07-14 jrmu s[i] = '\0';
42 5dc21454 2023-07-14 jrmu while ((c=getchar())!=EOF && c!='\n')
43 5dc21454 2023-07-14 jrmu ++i;
44 5dc21454 2023-07-14 jrmu return i;
45 5dc21454 2023-07-14 jrmu }
46 5dc21454 2023-07-14 jrmu
47 5dc21454 2023-07-14 jrmu void copy(char to[], char from[])
48 5dc21454 2023-07-14 jrmu {
49 5dc21454 2023-07-14 jrmu int i;
50 5dc21454 2023-07-14 jrmu i = 0;
51 5dc21454 2023-07-14 jrmu while ((to[i] = from[i]) != '\0')
52 5dc21454 2023-07-14 jrmu ++i;
53 5dc21454 2023-07-14 jrmu }