【发布时间】: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