diff --git a/getchar.c b/getchar.c new file mode 100644 index 0000000000000000000000000000000000000000..86e49d9a064fd69fb33792ee2cfa1b03487440d0 --- /dev/null +++ b/getchar.c @@ -0,0 +1,27 @@ +#include <inttypes.h> +#include <stdint.h> +#include <stdio.h> + +#define LEN_DIGITS 18 // Safe digits of INT64_MAX + +int +main (void) +{ + int64_t value = 0; + + printf ("Put the number in: "); + + for (int i = 0; i < LEN_DIGITS; i++) + { + int ch; + if ((ch = getchar ()) == '\n') + break; + + int digit = ch - '0'; + value = 10 * value + digit; + } + + printf ("Value is %" PRId64 "\n", value); + + return 0; +} diff --git a/meson.build b/meson.build index 27dd1dc4fb96a822b1d36d6dcb7c05cebc4a2e4a..a63ac749b8b55133b99e60dc7d532a505c953f5c 100644 --- a/meson.build +++ b/meson.build @@ -18,6 +18,7 @@ executable('fib', 'fib.c') executable('fixed-sizeof', 'fixed-sizeof.c') executable('fgets', 'fgets.c') executable('gcd', 'gcd.c') +executable('getchar', 'getchar.c') executable('kepler', 'kepler.c', dependencies: libm) executable('next', 'next.c', dependencies: libm) executable('parrot', 'parrot.c')