数组首先个数被冲掉,什么情况

数组第一个数被冲掉,什么情况?
void calculate2()
{
char x[8],y[8],ans[8];
int i=0,j=0,h[8]={0};
printf("输入第一个补码(限8位):");
scanf("%s",x);
printf("输入第二个补码(限8位):");
scanf("%s",y);

for(i=0;i<8;i++)
{
if(x[i]=='0'&&y[i]=='0')
ans[i]='0';
else if(x[i]=='0'&&y[i]=='1')
ans[i]='1';
else if(x[i]=='1'&&y[i]=='0')
ans[i]='1';
else if(x[i]=='1'&&y[i]=='1')
{
ans[i]='0';
h[i]=1;
}
}
for(i=7;i>=0;--i)
{
if(h[i]=='0');
else if(h[i]==1)
{
if(i=0)continue;
for(j=i-1;j>=0;--j)
{
if(ans[j]=='0')
{
ans[j]='1';
break;
}else{
ans[j]='0';
}
}
}
}

printf("加法运算后的结果为:");
for(i=0;i<8;++i)
printf("%c",ans[i]);
printf("\n");
}


输出ans数组时,ans[0]=‘?’.
经过我断点调试,发现输入x,y的值的时候已经出了问题。
输入第二个值(即y值)的时候,x[0]的值被冲掉了。不明白是什么情况,我肯定输入的是8位数字,望大神指教~~~谢谢!

------解决方案--------------------
楼主你知道8个字符需要9个字节来存储吗?