int值转换为字符串,%s格式化输出不来?解决方案
int值转换为字符串,%s格式化输出不来?
输出结果如下:
红框里面的%s为什么输出为空白?第一个printf函数%s输出的好好地。
------解决方案--------------------
ps[size-1-k]=(n>>k)&01+'0';这句,+优先级高于&,相当于是ps[size-1-k]=(n>>k)&(01+'0');不知道楼主本意y应该是这样吧:ps[size-1-k]=((n>>k)&01)+'0';
#include<stdio.h>
#include<string.h> //strlen()函数
int stoi(const char *); //字符串转换为数值
char * itos(int,char []); //数值转换为字符串
int main(int argc,char *argv[])
{
int l1,l2,mix_l;
char arr[8*sizeof(int)+1];
if(argc<2)
{
puts("请输入命令行参数");
}
else if(argc<3)
{
puts("请输入两个命令行参数");
l1=stoi(argv[1]);
// l1~=l1;
printf("%d=%s\n",~l1,itos(~l1,arr));
}
else if(argc<4)
{
l1=stoi(argv[1]);
l2=stoi(argv[2]);
printf("%d=%s\t%d=%s\n",~l1,itos(~l1,arr),~l2,itos(~l2,arr));
printf("%d&%d=%s\n",l1,l2,itos(l1&l2,arr));
printf("%d|%d=%s\n",l1,l2,itos(l1|l2,arr));
printf("%d^%d=%s\n",l1,l2,itos(l1^l2,arr));
}
else
puts("命令行参数过多");
puts("拜拜");
return 0;
}
int stoi(const char *ps)
{
int size=strlen(ps);
int k,re;
for(k=0,re=0;k<size;k++)
re|=(ps[k]-'0')<<(size-1-k);
return re;
}
char * itos(int n,char *ps)
{
int k,size=sizeof(int)*8; //我假定一个字节8位
for(k=0;k<size;k++)
// ps[size-1-k]=n&(01<<k)+'0';
ps[size-1-k]=(n>>k)&01+'0';
ps[size]='\0';
return ps;
}
输出结果如下:
红框里面的%s为什么输出为空白?第一个printf函数%s输出的好好地。
------解决方案--------------------
ps[size-1-k]=(n>>k)&01+'0';这句,+优先级高于&,相当于是ps[size-1-k]=(n>>k)&(01+'0');不知道楼主本意y应该是这样吧:ps[size-1-k]=((n>>k)&01)+'0';