如何在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 : '.'); }