使用C中的Bitmasks和Bit Operators检查char是否为ASCII

use*_*963 3 c ascii bitmask char

我需要编写程序来检查stdin中的每个char,看它是否是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;
}
Run Code Online (Sandbox Code Playgroud)

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

这也是我第一次问这里所以请原谅我的问题的任何不正确的格式.

jfs*_*jfs 8

来自ctype.h:

#define isascii(c)  ((c & ~0x7F) == 0)
Run Code Online (Sandbox Code Playgroud)