c - Kernighan 和 Ritchie - 练习 3.6(带有三个参数的 itoa
问题描述
我正在解决 K&R C 编程书上的练习 3.6:
编写一个接受三个参数而不是两个参数的 itoa 版本。第三个参数是最小字段宽度;如有必要,转换后的数字必须在左侧用空格填充以使其足够宽。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
void reverse1(char s1[]){
int len=0;
while(s1[len] != '\0'){
len++;
}
int j=0;
int i=1;
while( j!= (len)){
printf("%c",s1[len-i]);
i++;
j++;
}
printf("\n");
}
int itoa2(int n, char s[], int k){
int i, sign;
unsigned int n2;
if ((sign=n)<0)
n2=-n;
else
n2 = n;
i=0;
do
{
s[i++] = n2%10 +'0';
} while ((n2/=10)>0);
if (sign <0)
s[i++] = '-';
int len=0;
while(s[len] != '\0'){
len++;
}
if (len>=k){
s[i] = '\n';
reverse1(s);
}
else {
int f = k-len;
while (f!=0){
printf("%c", ' ');
f=f-1;
}
reverse1(s);
}
}
int main() {
char s[10000];
int n = -21;
itoa2(n,s,9);
}
在这里,我只是用空格打印缺少的空格。这是否足够或者我应该为此制作一个不同的数组?
解决方案
推荐阅读
- ios - 从原始图像快速获取图像填充
- javascript - 点击按钮后编辑本地文件
- javascript - 如何在 mongoose 和 node.js 上验证 db.collections.insertOne 输入
- python-3.x - Python 多处理使 OSX 刹车
- serialization - Akka Remote 共享课程
- python - 从函数返回张量流层输出
- verilog - 如何在 System Verilog 中断言另一个信号之前确保信号为高电平
- node.js - 邮递员收到过期的 cookie:从不
- excel - VBA除以最后一个值
- php - 如何将以下小时转换为分钟?