From 93c8c5f0d80b4d0a10b0546465b1bfa849e2433d Mon Sep 17 00:00:00 2001 From: Claudio Maggioni Date: Thu, 3 Oct 2019 16:34:06 +0200 Subject: [PATCH] 2019-10-03 in class --- flipword.c => flipword/flipword.c | 0 myscanf.c | 50 +++++++++++++++++++++++++++++++ revargs.c | 23 ++++++++++++++ 3 files changed, 73 insertions(+) rename flipword.c => flipword/flipword.c (100%) create mode 100644 myscanf.c create mode 100644 revargs.c diff --git a/flipword.c b/flipword/flipword.c similarity index 100% rename from flipword.c rename to flipword/flipword.c diff --git a/myscanf.c b/myscanf.c new file mode 100644 index 0000000..9327084 --- /dev/null +++ b/myscanf.c @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include + +char next_sign_char(); + +inline char next_sign_char() { + char c; + while (isspace(c = getchar())); + return c; +} + +int read_int(int* p) { + int i = 0; + bool pos = true; + + char c = next_sign_char(); + + if (c == '-' || c == '+') { + pos = c == '+'; + } else if (!isdigit(c)) { + return 0; + } else { + i = c - '0'; + } + + while ((c = getchar()) != EOF && c != '\n' && c != ' ') { + if (!isdigit(c)) return 0; + int digit = c - '0'; + if ((pos && i > (MAX_INT - digit) / 10) || + (!pos && i > (-1 * MIN_INT - digit) / 10)) { + break; + } + i *= 10; + i += c - '0'; + } + + *p = pos ? i : -i; + return 1; +} + + + +int main() { + int a; + read_int(&a); + printf("%d", a); +} diff --git a/revargs.c b/revargs.c new file mode 100644 index 0000000..28ee319 --- /dev/null +++ b/revargs.c @@ -0,0 +1,23 @@ +// vim: set ts=4 sw=4 et tw=80: + +#include +#include +#include + +bool compare_reverse(char* s1, char* s2) { + const size_t len = strlen(s1); + if (len != strlen(s2)) + return false; + for (size_t i = 0; i < len; i++) + if (s1[i] != s2[len - 1 - i]) + return false; + return true; +} + + +int main (const int argc, char** argv) { + for (int i = 1; i < argc - 1; i++) + for (int j = i + 1; j < argc; j++) + if (compare_reverse(argv[i], argv[j])) + printf("%s %s\n", argv[i], argv[j]); +}