下面是我的代码:
#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“解释为两个单独的字符,而不是转义的一个字符。
如何让代码转义为不可打印的字符?
发布于 2013-06-06 03:23:34
您希望告诉shell正确地解释转义序列。如果您使用的是Bash:
$ ./a.out $'\1'https://stackoverflow.com/questions/16948029
复制相似问题