要求用字符串输入八位的二进制数,输出十进制数,我的printf出来为什么一直是0,还有如果输入的不是八位数怎么在左边补0

#include <stdio.h>

int main()
{
int i=7,j;
int m=1,sum=0;
char str[i];
printf("Please input an integer:");
scanf("%s",&str[i]);
for(i=7;i>=0;i--)
{
if(str[i]==1)
{
for(j=0;j<7-i;j++)
{
m=m*2;
}
sum=sum+m;
}
}
printf("%d",sum);

}