使用 C 中的位掩码和位运算符检查字符是否为 ASCII

2024-01-09

我需要编写程序来检查标准输入中的每个单独的字符,看看它是否是 ASCII 字符。我知道它需要检查的是第 8 位(代码中的第 7 位,如果我没记错的话)是否为 0,因为 ASCII 只使用 7 位,但我很难弄清楚如何准确地让它检查具体位。这就是我在撰写本文时所拥有的。

#include <stdio.h>

#define MASK 7

int     main(void)
{

auto    char    inChar;

    do
    {
    inChar = getchar();

    // Breaks the do-while loop if it detects End of File
    if (inChar == EOF)
        {
        break;
        }

    printf("%c", inChar);

    if ( inChar == (0 & MASK))
        {
        printf("Not an ASCII Character.\n");
        }

    }while(1);

    puts("\n");

    return 0;
}

我知道我还没有正确实现编码器来检查每个字符值,但稍后我会担心这一点。现在我只需要帮助让它检查变量中的特定位。

另外,这是我第一次在这里提问,所以请原谅我的问题格式不正确。


From ctype.h http://www.opensource.apple.com/source/Libc/Libc-262/include/ctype.h:

#define isascii(c)  ((c & ~0x7F) == 0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C 中的位掩码和位运算符检查字符是否为 ASCII 的相关文章