【发布时间】:2012-10-14 14:13:13
【问题描述】:
我尝试用 C 输出字符列表: http://www.alt-codes.net/
for (i=0; i<len; i++){
printf("%d\t: %c", i, i);
}
我遇到的所有非 ASCII 字符的问题?在 Ubuntu 上工作。
我怎样才能以良好的方式输出它们。
【问题讨论】:
我尝试用 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++ 测试,都打印了这些符号。但在另一个操作系统和/或编译器上,可能会打印不同的符号或根本不打印。
只有 ASCII 字符 32 - 126 保证在所有系统上都是可打印的,并且符号相同。
【讨论】:
各种 ASCII 字符,例如许多低于 32 的字符,是不可打印的。在打印之前,您需要将不可打印的内容翻译成其他内容(例如空格)。
请注意,您链接到的 ALT 代码不是 ASCII 代码。
【讨论】:
您的字符集不得包含☺ 等字符。您正在查看的是 alt 键代码符号列表,根本不是 ASCII。
【讨论】:
根据您的需要,您可以采用十六进制编辑器的方法,只打印那些具有图形表示的字符,为此您可以使用isprint() 或isgraph()(最新版本与@基本相同) 987654323@但不打印空格)在ctype.h中定义,例如:
for (i = 0; i < len; i++) {
printf("%d\t: %c", i, isprint(i) ? i : '.');
}
【讨论】: