From 1c56e1c7e31d558a88b6231e2dc8350613792c98 Mon Sep 17 00:00:00 2001 From: NaiJi Date: Wed, 1 May 2024 12:40:57 +0400 Subject: [PATCH] 1.19 --- The C Programming Language/1.19.c | 48 +++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 The C Programming Language/1.19.c diff --git a/The C Programming Language/1.19.c b/The C Programming Language/1.19.c new file mode 100644 index 0000000..6e68846 --- /dev/null +++ b/The C Programming Language/1.19.c @@ -0,0 +1,48 @@ +#include + +#define MAXLINE 10 + +int _getline(char line[], int maxline); +void reverse(char to[], char from[], int from_head); + +main() +{ + int len; + char line[MAXLINE]; + char reversed[MAXLINE]; + + while ((len = _getline(line, MAXLINE)) > 0) + { + reverse(reversed, line, len); + printf("%s\n", reversed); + } + + return 0; +} + +int _getline(char s[], int lim) +{ + int c, i, j; + for (i = 0; (c = getchar()) != '\n'; ++i) + { + if (i < lim - 1) + s[i] = c; + } + + j = i; + if (j > lim - 1) + j = lim - 1; + s[j] = '\0'; + return j - 1; +} + +void reverse(char to[], char from[], int from_head) +{ + int i; + for (i = 0; i <= (from_head / 2); ++i) + { + to[i] = from[from_head - i]; + to[from_head - i] = from[i]; + } + to[from_head+1] = '\0'; +}