c - 检查二进制字符串输入是否有效
问题描述
我收到了一项任务,要求从用户那里获取输入(表示数字的二进制字符串)并以十进制和十六进制打印接收到的数字。
我创建了一个附加函数来确定二进制字符串的输入是否正确(仅包括 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;
}
帮助将不胜感激!
解决方案
您想扫描一个字符串(指向 的指针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;
fortrue
和return 0;
for false
。