Blame


1 5dc21454 2023-07-14 jrmu /*
2 5dc21454 2023-07-14 jrmu * 1-19. Write a function reverse(s) that reverses the character string s.
3 5dc21454 2023-07-14 jrmu * Use it to write a program that reverses its input a line at a time.
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 1000
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 int strln(char s[]);
13 5dc21454 2023-07-14 jrmu void rverse(char s[]);
14 5dc21454 2023-07-14 jrmu
15 5dc21454 2023-07-14 jrmu main()
16 5dc21454 2023-07-14 jrmu {
17 5dc21454 2023-07-14 jrmu int len; /* current line length */
18 5dc21454 2023-07-14 jrmu char line[MAXLINE]; /* current input line */
19 5dc21454 2023-07-14 jrmu
20 5dc21454 2023-07-14 jrmu while ((len = getlin(line, MAXLINE)) > 0) {
21 5dc21454 2023-07-14 jrmu rverse(line);
22 5dc21454 2023-07-14 jrmu printf("%s\n", line);
23 5dc21454 2023-07-14 jrmu }
24 5dc21454 2023-07-14 jrmu return 0;
25 5dc21454 2023-07-14 jrmu }
26 5dc21454 2023-07-14 jrmu
27 5dc21454 2023-07-14 jrmu int strln(char s[])
28 5dc21454 2023-07-14 jrmu {
29 5dc21454 2023-07-14 jrmu int i;
30 5dc21454 2023-07-14 jrmu for (i=0; s[i] != '\0'; ++i)
31 5dc21454 2023-07-14 jrmu ;
32 5dc21454 2023-07-14 jrmu return i;
33 5dc21454 2023-07-14 jrmu }
34 5dc21454 2023-07-14 jrmu
35 5dc21454 2023-07-14 jrmu void rverse(char s[])
36 5dc21454 2023-07-14 jrmu {
37 5dc21454 2023-07-14 jrmu int i, len;
38 5dc21454 2023-07-14 jrmu char c;
39 5dc21454 2023-07-14 jrmu len = strln(s);
40 5dc21454 2023-07-14 jrmu
41 5dc21454 2023-07-14 jrmu for (i = 0; i < len/2; ++i) {
42 5dc21454 2023-07-14 jrmu c = s[i];
43 5dc21454 2023-07-14 jrmu s[i] = s[len-1-i];
44 5dc21454 2023-07-14 jrmu s[len-1-i] = c;
45 5dc21454 2023-07-14 jrmu }
46 5dc21454 2023-07-14 jrmu }
47 5dc21454 2023-07-14 jrmu
48 5dc21454 2023-07-14 jrmu int getlin(char s[], int lim)
49 5dc21454 2023-07-14 jrmu {
50 5dc21454 2023-07-14 jrmu int c, i;
51 5dc21454 2023-07-14 jrmu
52 5dc21454 2023-07-14 jrmu for (i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
53 5dc21454 2023-07-14 jrmu s[i] = c;
54 5dc21454 2023-07-14 jrmu if (c == '\n') {
55 5dc21454 2023-07-14 jrmu ++i;
56 5dc21454 2023-07-14 jrmu }
57 5dc21454 2023-07-14 jrmu s[i] = '\0';
58 5dc21454 2023-07-14 jrmu return i;
59 5dc21454 2023-07-14 jrmu }
60 5dc21454 2023-07-14 jrmu
61 5dc21454 2023-07-14 jrmu void copy(char to[], char from[])
62 5dc21454 2023-07-14 jrmu {
63 5dc21454 2023-07-14 jrmu int i;
64 5dc21454 2023-07-14 jrmu i = 0;
65 5dc21454 2023-07-14 jrmu while ((to[i] = from[i]) != '\0')
66 5dc21454 2023-07-14 jrmu ++i;
67 5dc21454 2023-07-14 jrmu }