首页 > 解决方案 > 检查二进制字符串输入是否有效

问题描述

我收到了一项任务,要求从用户那里获取输入(表示数字的二进制字符串)并以十进制和十六进制打印接收到的数字。

我创建了一个附加函数来确定二进制字符串的输入是否正确(仅包括 1 和 0)。

代码工作得很好,除非我以某种方式输入字符串:

假设我输入11110000

该功能运行平稳。

但是当我尝试输入1111000作为我输入的第一个字符串时,该函数告诉我该字符串无效。

如果我在输入11110000后输入相同的字符串(1111000),它工作得很好!

附上我的功能:

int CheckIfDigits1or0(char *NumString[MAX_SIZE_INPUT+2])
    {
        char digit;
        for (digit = *NumString; digit != '\0'; digit = *NumString++)
        {
            if (digit != '0' && digit != '1' && digit != '\n')
            {
                return 1;
            }
        }
        return 0;
    }

帮助将不胜感激!

标签: cstringbinarybit-manipulation

解决方案


您想扫描一个字符串(指向 的指针char),而不是指向 的指针数组char

int CheckIfDigits1or0(char *NumString[MAX_SIZE_INPUT+2])

应该

int CheckIfDigits1or0(char NumString[MAX_SIZE_INPUT+2])

或者干脆

int CheckIfDigits1or0(char NumString[]) // or char *NumString

另外,请注意我们通常使用return 1;fortruereturn 0;for false


推荐阅读