当我使用NetBeans编译下面的代码时,程序的输出是终端中的一些奇怪的字符(testeáÃμ)。不幸的是我无法找到解决方案。
有没有人经历过这个?知道解决方案吗?
#include <stdio.h>
#include <locale.h>
int main(int argc, char** argv) {
setlocale(LC_ALL,"");
printf("teste á é õ");
return (0);
}
我的编译器是MinGW,我的母语是巴西葡萄牙语。
输出:
答案 0 :(得分:-1)
他们不是Ascii角色。
ASCII字符0-31是各种空格字符,没有标准化的方式来打印它们。这是一个“扩展的ASCII表”。无法保证在您的特定平台上打印这些确切的符号。
它们在Windows 7中运行良好,使用GCC和Embarcadero C ++进行测试,都可以打印这些符号。但是在另一个OS和/或编译器上,可能会打印不同的符号或者根本不打印任何符号。
在所有系统上,只保证ASCII字符32 - 126可打印,并且符号相同。
答案 1 :(得分:-1)
C ++是一种英语语言,只能打印英文的原始ASCII代码,一些第三方库如Curses让你可以解决这个问题并打印一些非ASCII的代码:http://www.melvilletheatre.com/articles/ncurses-extended-characters/index.html
但是在大多数情况下,我不明白你为什么要打印这些字符,因为没有实际目的。
其他说明:由于原始ASCII码由127种类型组成,因此无法执行此操作。二进制和东西,问题的答案不同,所以只知道他们只允许127封可能的字母,更多可以在这里找到。 enwikipedia.org/wiki/ASCII 和 williamrobertson.net/documents/ascii.html(这个给你实际可以用C ++打印的内容)