c - 如何检查字符串是否只包含 1 和 0?

标签 c

我正在尝试检测一个字符串是否只包含字符“0”和“1”。这是我目前所拥有的:

    while (indexCheck < 32) {

        if ((input[indexCheck] != '0') && (input[indexCheck] != '1')) {

            printf("not binary ");
            indexCheck++;

        }  else if ((input[indexCheck] = '0') && (input[indexCheck] = '1')) {
            indexCheck++;
            printf("is binary ");

        } 

    }

我知道为什么它为数组中的每个字符返回“是二进制”或“不是二进制”,但我不知道如何解决这个问题。如果字符串仅由“1”和“0”组成,我希望它返回一次“is binary”,如果这是错误的,则相反。我是 C 的新手,所以感谢所有帮助。

最佳答案

无需手动遍历字符串,您可以通过检查是否为 strspn() 来查看它是否仅包含某些字符。返回字符串的长度(通过查看其返回值的索引是否为字符串末尾的 0 终止符):

_Bool is_binary(const char *s) {
  if (!s || !*s) {
    return 0;
  }
  return s[strspn(s, "01")] == '\0';
}

关于c - 如何检查字符串是否只包含 1 和 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55374669/

相关文章:

c++ - 从控制台读取字符

c - MAP_ANON 和 MAP_ANONYMOUS 都未在 C 中为 sys/mmap 声明

c - 每次从文件读取时的输出变化

C语言编程

objective-c - 为地理坐标类实现 -hash 和 -isEqual

c - 找出与 sendto 函数中使用的套接字关联的 src IP 和端口

c - 为什么要在堆上而不是栈上分配内存?

c - 在 pow() 中执行双数组时输出错误

c - 如何将 Perl 转换为 C?

c - <<= 代表什么(在 C 语言中)?