diff options
| author | Sadeep Madurange <smadurange@users.noreply.github.com> | 2021-12-03 19:15:03 +0800 |
|---|---|---|
| committer | Sadeep Madurange <smadurange@users.noreply.github.com> | 2021-12-03 19:15:03 +0800 |
| commit | b15749294b1dac15bf43989e5464fc4ed594673c (patch) | |
| tree | 9988f27e583d1b840abee7b8d26ac6ae6eaa9b53 /3/4.c | |
| parent | 5247d52117f91edcf7c1999e256c92263cabfbf0 (diff) | |
| download | k&r-exercises-b15749294b1dac15bf43989e5464fc4ed594673c.tar.gz | |
3.4
Diffstat (limited to '3/4.c')
| -rw-r--r-- | 3/4.c | 48 |
1 files changed, 48 insertions, 0 deletions
@@ -0,0 +1,48 @@ +#include <ctype.h> +#include <limits.h> +#include <stdio.h> +#include <string.h> + +#define MAXLEN 50 + +void itoa(int n, char s[]); +void reverse(char s[]); + +int main(int argc, char *argv[]) { + char s[MAXLEN]; + + itoa(INT_MIN, s); + printf("Largest negative number on machine: %d\n", INT_MIN); + printf("Largest negative number after itoa: %s\n", s); + + return 0; +} + +void itoa(int n, char s[]) { + int i, sign; + + i = 0; + + if ((sign = n) < 0) + n = -n; + + do { + s[i++] = n % 10 + '0'; + } while ((n /= 10) > 0); + + if (sign < 0) + s[i++] = '-'; + s[i] = 0; + + reverse(s); +} + +void reverse(char s[]) { + int c, i, j; + + for (i = 0, j = strlen(s) - 1; i < j; i++, j--) { + c = s[i]; + s[i] = s[j]; + s[j] = c; + } +}
\ No newline at end of file |
