#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
/* 将最小整数打印为字符串,关键点,原负数不变,abs(n%10) 和 n/=10 */
void reverse(char s[]);
void my_itoa(int n, char s[]);
int main(void) {
char buffer[20];
printf("INT_MIN: %d\n", INT_MIN);
my_itoa(INT_MIN, buffer);
printf("Buffer : %s\n", buffer);
return 0;
}
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;
}
}
void my_itoa(int n, char s[]) {
int i, sign;
sign = n;
i = 0;
do {
s[i++] = abs(n % 10) + '0';
} while ( n /= 10 );
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
能处理最小负数的itoa函数
最新推荐文章于 2024-04-27 07:00:00 发布