如何提供/读取不可打印的字符

时间:2013-06-05 19:16:57

标签: c

这是我的代码:

#include <string.h>
#include <stdio.h>

int main( int argc, char** argv)
{
        static char tmpBuf[ 4 ];
        long idx;
        unsigned int cks;
        int bufLen = strlen(argv[1]);

        for ( idx = 0, cks = 0; idx < bufLen; idx++) {
            unsigned char c = argv[1][idx];
            printf("Char=%c|", c);
            cks += c;
        }
        sprintf( tmpBuf, "%03d", (unsigned int)( cks % 256 ) );
        printf( "\n%s\n", tmpBuf ); 

        return 0;
}

基本上它总结了可能包含不可打印字符的所有字符。在我的测试中:

>./a.out  "\1"
Char=\|Char=1|
141

您可以看到该程序将“\ 1”解释为2个单独的字符,而不是转义的一个字符。

如何让代码转义为使用不可打印的char?

1 个答案:

答案 0 :(得分:4)

您希望告诉shell正确解释转义序列。如果你正在使用Bash:

$ ./a.out $'\1'