C程序设计语言 (第二版) 练习3-6
练习 3-6 修改itoa函数,使得该函数可以接收三个参数。其中,第三个参数为最小字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度,在必要时应在所得结果的左边填充一定的空格。
注意:代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。
IDE工具:Visual Studio 2010
代码块:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverse(char s[]){
int len = strlen(s);
int i, j;
char temp;
for(i = 0, j = len - 1; i < j; i++, j--){
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
void newitoa(int n, char s[], int w){
int i, sign;
sign = n;
i = 0;
do{
if(sign < 0){
s[i++] = n % 10 * (-1) + '0';
}
else{
s[i++] = n % 10 + '0';
}
}while((n /= 10) != 0);
if(sign < 0){
s[i++] = '-';
}
for(; i < w; s[i++] = ' ');
s[i] = '\0';
reverse(s);
}
int main(){
char s[80];
int n = -2147483648;
newitoa(n, s, 20);
printf("%s\n", s);
system("pause");
return 0;
}