二进制数。检查以确保二进制输入是二进制时出错

时间:2010-09-18 03:37:14

标签: c++ string binary ascii

我正在编写一个简单的循环来确保我的输入是有效的二进制文件。例如:当用户输入任何大于1的数字时,我想抛出一个错误。我知道我需要检查ASCII号码。这里发生了什么?输入二进制文件时,我不应该收到错误。有什么想法吗?

for (int i=0;i<size;i++)
{
    printf("%i is string sub %i\n",int(binary[i]),i);
    if (int(binary[i]) != 48 || int(binary[i]) != 49)
    {
        printf("ERROR NOT A BINARY NUMBER\n");
        exit(0);
    }
}

输入:

0101

输出:

48 is string sub 0
ERROR NOT A BINARY NUMBER

2 个答案:

答案 0 :(得分:6)

您需要使用if (int(binary[i]) != 48 && int(binary[i]) != 49) - note&amp;&amp;而不是||。按照目前的情况,if(...)实际上是if(true),因为binary[i]不能同时是48和49。

答案 1 :(得分:1)

您使用的是错误的布尔运算符。如果你大声读出你的if语句,就会听起来像这样:

如果binary [i]不是'0'或者它不是'1',则执行if语句中的内容。

同时两件事怎么样?

使用&&代替||