如何使用curses打印ASCII表

时间:2016-04-06 23:57:30

标签: c ncurses

我尝试打印ASCII表格,但显示的字符为^N^O^P^Q^R^S等。

要制作RPG引擎,我需要在屏幕上放置ASCII表,供用户选择图块

for (i = 0; i < 256; i++){
     wprintw(tiles_window, "%c", i);
}

但正如我所说,这只是显示^A^L^C ...

1 个答案:

答案 0 :(得分:1)

(n)curses将显示可打印的信息。它特别处理某些控制字符,例如制表符,换行符,回车符,退格键(请参阅addch手册页)。每个角色都有可打印的形式。您可以使用keyname - 它会将控制字符显示为^A等。但是,使用keyname,您可以确保addch可以使用的特殊字符用于定位的是可打印的形式。

您的示例可能如下所示:

for (i = 0; i < 256; i++){
         wprintw(tiles_window, "%4s ", keyname(i));
    }

生成这样的东西:

  ^@   ^A   ^B   ^C   ^D   ^E   ^F   ^G   ^H   ^I   ^J   ^K   ^L   ^M   ^N   ^O
  ^P   ^Q   ^R   ^S   ^T   ^U   ^V   ^W   ^X   ^Y   ^Z   ^[   ^\   ^]   ^^   ^_
        !    "    #    $    %    &    '    (    )    *    +    ,    -    .    /
   0    1    2    3    4    5    6    7    8    9    :    ;    <    =    >    ?
   @    A    B    C    D    E    F    G    H    I    J    K    L    M    N    O
   P    Q    R    S    T    U    V    W    X    Y    Z    [    \    ]    ^    _
   `    a    b    c    d    e    f    g    h    i    j    k    l    m    n    o
   p    q    r    s    t    u    v    w    x    y    z    {    |    }    ~   ^?
M-^@ M-^A M-^B M-^C M-^D M-^E M-^F M-^G M-^H M-^I M-^J M-^K M-^L M-^M M-^N M-^O
M-^P M-^Q M-^R M-^S M-^T M-^U M-^V M-^W M-^X M-^Y M-^Z M-^[ M-^\ M-^] M-^^ M-^_
 M-   M-!  M-"  M-#  M-$  M-%  M-&  M-'  M-(  M-)  M-*  M-+  M-,  M--  M-.  M-/
 M-0  M-1  M-2  M-3  M-4  M-5  M-6  M-7  M-8  M-9  M-:  M-;  M-<  M-=  M->  M-?
 M-@  M-A  M-B  M-C  M-D  M-E  M-F  M-G  M-H  M-I  M-J  M-K  M-L  M-M  M-N  M-O
 M-P  M-Q  M-R  M-S  M-T  M-U  M-V  M-W  M-X  M-Y  M-Z  M-[  M-\  M-]  M-^  M-_
 M-`  M-a  M-b  M-c  M-d  M-e  M-f  M-g  M-h  M-i  M-j  M-k  M-l  M-m  M-n  M-o
 M-p  M-q  M-r  M-s  M-t  M-u  M-v  M-w  M-x  M-y  M-z  M-{  M-|  M-}  M-~ M-^?