当我尝试打印出' a' index [0],我没有收到值。 我的意见是' 1111'并且输出不会为索引0提供任何内容。如果我使用for循环打印出所有元素,我只得到三个元素,' 111'。
int main(int argc, const char * argv[])
{
char a[4];
char b[4];
printf("Input the first binary character: \n");
scanf("%s",a);
printf("Input the second binary character: \n");
scanf("%s",b);
printf("%c",a[0]);
return 0;
}
答案 0 :(得分:2)
您的输入缓冲区非常小:
char a[4];
char b[4];
这些缓冲区最多可以包含三个字符,因为它们还必须为treminating null字符保留空间。
来自用户的输入可能不安全;用户很可能不遵守三个字符的限制。因此,您应该在扫描数字时强制执行限制:
scanf("%3s",a);
将缓冲区放大可能也是一个好主意。即使您不希望允许大于7的二进制数,您也应该读取一个更大的字符串,并在它更长或包含非二进制数字时发出合适的错误消息。请注意,scanf
也有返回值。它不太可能,但用户可能通过按Ctrl-D或Ctrl-Z来结束输入流。你的代码应该处理这种情况。