Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <limits.h>
- void numb_shift(char *str)
- {
- int len = strlen(str);
- str[0] = '1';
- for(int i = 1; i <= len; i++)
- str[i] = '0';
- str[len + 1] = '\0';
- return;
- }
- void sign_append(char *str)
- {
- char cpy[256];
- cpy[0] = '-';
- for(int i = 1, j = 0; (cpy[i] = str[j]); i++, j++)
- ;
- return;
- }
- void my_itoa(int numb, char *str)
- {
- int pos = 0;
- int sign = numb < 0 ? 1 : 0;
- if (numb < 0)
- {
- if (numb == INT_MIN)
- numb = INT_MAX;
- else
- numb = -(numb + 1);
- }
- while (numb)
- {
- str[pos++] = (numb % 10) + '0';
- numb /= 10;
- }
- str[pos] = '\0';
- int st_len = strlen(str);
- for(int i = st_len - 1, j = 0; i > j; i--, j++)
- {
- char tmp = str[i];
- str[i] = str[j];
- str[j] = tmp;
- }
- if (!sign)
- return;
- int flg_transfer = 0; // Number transfer (69 + 1, etc.)
- for (pos = st_len - 1; pos >= 0; pos--)
- {
- flg_transfer = 0;
- if (str[pos] == '9')
- {
- str[pos] = '0';
- flg_transfer++;
- }
- else
- {
- str[pos] += 1;
- break;
- }
- }
- if (pos < 0)
- numb_shift(str);
- sign_append(str);
- return;
- }
- int main(void)
- {
- int numb;
- char str_n[256];
- numb = INT_MAX;
- my_itoa(numb, str_n);
- printf("%s\n", str_n);
- numb = INT_MIN;
- my_itoa(numb, str_n);
- printf("%s\n", str_n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement