C编程(初学者帮助)Ascii表

时间:2015-04-29 11:29:40

标签: c visual-studio ascii

大家好,我需要一些C编程方面的帮助。 我需要写一个没有数字的ascii表:0,7-10,13。每个字母之间将是" \ t"在每10个字符之后它将跳过线。 我现在的代码:

void ascii()
{
    int i;
    for (i = 0; i <= 255; i++)
    {
        if (i == 0)
        {
            printf("\t");

        }
        if (0 == i % 10)
        {
            printf("\n");
        }       
        printf("%d = %c\t", i, i);

    }
    return;
}

2 个答案:

答案 0 :(得分:1)

为什么要排除这些代码?排除所有不可打印的代码不是更好吗? isprint会做到这一点。

    #include <ctype.h>

    if (isprint(i)) printf("%d = %c\t", i, i);

如果要排除这些特定代码,可以使用与isxxx函数相同的技术:

char is_print[256] = { 0,1,1,1,1,1,1,0,0,0,0,1,1,0,1,1, /* 0 in pos 0, 7-10 and 13 */
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
                       1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
}; /* Filter with 0 for the chars we want to exclude. */ 

int myIsprint(char c) {
    return is_print((unsigned char)c); /* Use the filter */
}

在你的功能中:

if (myIsprint(i)) printf("%d = %c\t", i, i);

注意:

在简单的情况下,您也可以使用if来测试特定代码if (i != 0 && i != 13 && (i < 7 || i > 10)) print...。 上述滤波器技术具有闪电般快速的优点,即使案例数量很大,代码也易于阅读。

答案 1 :(得分:0)

你应该换

printf("%d = %c\t", i, i);

if - 声明中排除特殊情况:

if (!(i == 0 || (i >= 7 &% i <= 10) || i == 13)) {
    printf("%d = %c\t", i, i);
}