首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

位操作程序有关问题

2012-11-03 
位操作程序问题有道题目叫我编写程序,大概意思就是读入二进制字符串进行位操作后输出二进制字符串结果,我

位操作程序问题
有道题目叫我编写程序,大概意思就是读入二进制字符串进行位操作后输出二进制字符串结果,我刚编了一部分,运行时有错,请问错在哪?
#include <stdlib.h>
int btoi (char * p);
char * itob (int , char *);
int main (int argc, char * argv[ ])
{
int a1, a2, b1, b2, b3, b4, b5;
char ps[9];
if (argc != 3)
{
printf ("Wrong argument quantity.\n");
exit (1);
}
a1 = btoi (argv[1]);
a2 = btoi (argv[2]);
b1 = ~a1;
b2 = ~a2;
b3 = a1 & a2;
b4 = a1 | a2;
b5 = a1^ a2;
printf ("~%s is %s", argv[1], itob (b1, ps));
return 0;
}
int btoi (char * p)
{
int val = 0;
while (*p != '\0')
val = (val << 1) + *p++ - '0';
return val;
}
char * itob (int i, char * ps)
{
int j;
for (j = 8; j >= 0; j--, i >> 1)
ps[j] = (01 & i) + '0';
ps[9] = '\0';
return ps;
}

[解决办法]

C/C++ code
ps[9] = '\0';//越界了,ps[0], ...., ps[8]为合法的 

热点排行