From 3ea0f0211b4588476f3a92981ad8ed64b0715177 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 20 Nov 2021 22:12:39 +0800 Subject: 1.19 --- 1/17.c | 2 +- 1/19.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 1/19.c diff --git a/1/17.c b/1/17.c index 2797b10..70ee4f2 100644 --- a/1/17.c +++ b/1/17.c @@ -30,5 +30,5 @@ int cgetline(char s[], int max) { s[i] = c; s[i] = '\0'; - return c != '\n' && c != EOF ? -1 : i; + return c != '\n' && c != EOF ? -1 : i - 1; } \ No newline at end of file diff --git a/1/19.c b/1/19.c new file mode 100644 index 0000000..cba39a3 --- /dev/null +++ b/1/19.c @@ -0,0 +1,46 @@ +#include + +#define MAXLEN 5 + +int cgetline(char s[], int max); +void reverse(char s[], int size); + +/* reverses input string */ +int main(int argc, char *argv[]) { + int size; + char s[MAXLEN]; + + while ((size = cgetline(s, MAXLEN)) > 0) { + reverse(s, size); + printf("%s\n", s); + } + + if (size == -1) { + printf("exceeded max input size: %d\n", MAXLEN); + return 1; + } + + return 0; +} + +int cgetline(char s[], int max) { + int c, i; + + for (i = 0; i < max - 1 && (c = getchar()) != EOF && c != '\n'; i++) + s[i] = c; + s[i] = '\0'; + + return i == max && c != '\n' && c != EOF ? -1 : i; +} + +void reverse(char s[], int size) { + int i, j, lim; + + lim = size / 2; + + for (i = 0, j = size - i - 1; i < lim; i++) { + s[i] = s[i] ^ s[j]; + s[j] = s[i] ^ s[j]; + s[i] = s[i] ^ s[j]; + } +} \ No newline at end of file -- cgit v1.2.3