练习3-6 修改itoa函数,使得该函数可以接收三个参数。其中,第三个参数为最小字段宽度。为了保证转化后所得结果至少具有第三参数指定的最小宽度,必要时应在所得结果的左边添加一定的空格。
#include <stdio.h>
#include <string.h>#define MAXLEN 32void itoa(int n, char s[], int l);
void reverse(char s[]);int main()
{int n, l;char s[MAXLEN];printf("Please input digit n, length l:\n");scanf("%d,%d", &n, &l);itoa(n, s, l);printf("string:%s\n", s);return 0;
}void itoa(int n, char s[], int l)
{int i, sign, len;sign = n;i = 0;do {if (sign < 0)s[i++] = -(n % 10) + '0';else s[i++] = n % 10 + '0';} while ((n /= 10) != 0);if (sign < 0)s[i++] = '-';while (strlen(s) < l) //增加的地方s[i++] = ' ';s[++i] = '\0';reverse(s);return;
}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;}return;
}