如何在C中打印非ASCII字符

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

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

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

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

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

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

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

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

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

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

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

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

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