【问题标题】:Checking if binary string input is valid检查二进制字符串输入是否有效
【发布时间】:2020-10-16 06:11:36
【问题描述】:

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

我创建了一个附加函数来确定二进制字符串的输入是否正确(仅包括 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;
    }

我们将不胜感激!

【问题讨论】:

  • 在一行中:if (strspn(str, "01") == strlen(str)) 但首先删除任何换行符。
  • char *NumString[MAX_SIZE_INPUT+2] 是问题所在。类型错误。发布minimal reproducible example

标签: c string binary bit-manipulation


【解决方案1】:

您要扫描一个字符串(指向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; 表示truereturn 0; 表示false

【讨论】:

    猜你喜欢
    • 2022-10-13
    • 2022-01-13
    • 2012-02-22
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2014-08-10
    • 2019-05-05
    相关资源
    最近更新 更多