From 569a5bd5c48d8969e644947ce3d89a97a0d56e5e Mon Sep 17 00:00:00 2001 From: zlg Date: Sat, 11 Aug 2012 14:55:41 -0400 Subject: Initial commit --- 1-16_longest-line.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 1-16_longest-line.c (limited to '1-16_longest-line.c') diff --git a/1-16_longest-line.c b/1-16_longest-line.c new file mode 100644 index 0000000..1f6e556 --- /dev/null +++ b/1-16_longest-line.c @@ -0,0 +1,52 @@ +#include + +#define MAXLENGTH 100 + +int get_line(char s[], int lim) { + /* Put as much as possible into a temp string, and count its length */ + int c, i; + + for (i = 0; i < lim && (c = getchar()) != EOF && c != '\n'; ++i) { + s[i] = c; + } + if (c == '\n') { + s[i] = c; + ++i; + } + s[i] = '\0'; + return i; +} + +void copy(char from[], char to[]) { + int i = 0; + + while ((to[i] = from[i]) != '\0') { + ++i; + } +} + +int main() { + int len, max; + + char line[MAXLENGTH]; + char longest[MAXLENGTH]; + + max = 0; + while ((len = get_line(line, MAXLENGTH)) > 0) { + if (len > max) { + max = len; + copy(line, longest); + } + } + + printf("\nThe longest line is %3d characters long.\n", max); + printf("----------------------------------------\n"); + if (max > 0) { + printf("%-s", longest); + if (max == MAXLENGTH && longest[max - 1] != '\n') { + printf("\n"); + } + } + + return 0; +} -- cgit v1.2.3-54-g00ecf