如何在C中打印非ASCII字符

时间:2012-10-24 14:03:34

标签: c non-ascii-characters

我尝试用C输出字符列表: http://www.alt-codes.net/

for (i=0; i<len; i++){
    printf("%d\t: %c", i, i);
}

我得到的所有非ASCII字符的问题?在Ubuntu工作。

如何以良好的方式输出它们。

4 个答案:

答案 0 :(得分:1)

格式化效果不佳,但除此之外,您发布的代码仍有效。

ASCII字符0-31是各种空格字符,没有标准化的方式来打印它们。您发布的链接是一个常见但非标准的扩展ASCII表&#34;。无法保证在您的特定平台上打印这些确切的符号。

它们在Windows 7中运行良好,使用GCC和Embarcadero C ++进行测试,都可以打印这些符号。但是在另一个OS和/或编译器上,可能会打印不同的符号或者根本不打印任何符号。

在所有系统上,只保证ASCII字符32 - 126可打印,并且符号相同。

答案 1 :(得分:0)

各种ASCII字符,例如许多低于32的字符,都是不可打印的。您需要在打印之前将不可打印的文件转换为其他内容(例如空格)。

请注意,您链接的ALT代码不是ASCII代码。

答案 2 :(得分:0)

您的字符集可能不包含等字符。您正在查看的是alt键代码符号列表,而不是ASCII。

答案 3 :(得分:0)

根据您的需要,您可以采用十六进制编辑器的方法并仅打印具有图形表示的字符,为此您可以使用isprint()isgraph()(最新的基本上是与isprint()相同,但不打印ctype.h中定义的空格,例如:

for (i = 0; i < len; i++) {
    printf("%d\t: %c", i, isprint(i) ? i : '.');
}