-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.c
More file actions
36 lines (30 loc) · 978 Bytes
/
main.c
File metadata and controls
36 lines (30 loc) · 978 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
int reverse(long number)
{
if (number == 0)
return 0;
if ((number > (1LL << 31) - 1) || (number < -(1LL << 31)))
return 0;
int digits = snprintf(NULL, 0, "%ld", number);
char* string_number = malloc(digits + 1);
snprintf(string_number, digits + 1, "%ld", number);
char* reversed_string_number = malloc(digits + 1);
for (int i = 0; i < digits; ++i)
reversed_string_number[i] = string_number[digits - 1 - i];
free(string_number);
long reversed_number = strtol(reversed_string_number, NULL, 10);
free(reversed_string_number);
if ((reversed_number > (1LL << 31) - 1) || (reversed_number < -(1LL << 31)))
return 0;
if (number < 0)
return -reversed_number;
return reversed_number;
}
int main()
{
long number = 1534236469;
long reversed_number = reverse(number);
printf("Reverse int: %ld\n", reversed_number);
exit(EXIT_SUCCESS);
}