-
Notifications
You must be signed in to change notification settings - Fork 67
/
Copy pathex_1-17.c
74 lines (59 loc) · 1.03 KB
/
ex_1-17.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
function: readbuffer
read chars from input until newline is found or buffer is full
return if buffer overflowed while filling
function printline
print buffer passed in
keep printing input until newline is found
main
buffer
status
while status not changed
readbuffer
if status changes
print buffer
print rest of line until newline
*/
#include <stdio.h>
#define MAX 81
int readbuffer(char *buffer)
{
int i = 0;
char c;
while(i < MAX)
{
c = getchar();
if (c == EOF) { return -1; }
if(c == '\n') { return 0; }
buffer[i++] = c;
}
return 1;
}
int printline(char *buffer)
{
int endfound = 1;
unsigned char c, i;
for(i = 0; i < MAX; ++i)
putchar(buffer[i]);
while(endfound == 1)
{
c = getchar();
if (c == EOF) { endfound = -1; }
else if (c == '\n' ) { endfound = 0; }
else { putchar(c); }
}
putchar('\n');
return endfound;
}
int main(void)
{
char buffer[MAX];
int status = 0;
while (status != -1)
{
status = readbuffer(buffer);
if(status == 1)
status = printline(buffer);
}
return 0;
}