printf不像fprintf那样打印

时间:2017-01-14 19:22:47

标签: c windows printf ascii special-characters

我正在C中为一个项目制作一个程序,它将打印到文件的所有内容打印到控制台。问题是我必须打印一些特殊字符,如'Ç',所以我使用ascii代码,它打印到控制台很好,但它打印到文件是不正确的。这是一个例子:

printf(" %c", 128);

output to console: Ç

fprintf(output, " %c", 128);

output to file: €

我在cmd中运行命令chcp,它告诉我我正在使用代码页850并且我使用了那些asci代码,所以我不知道是什么问题。程序写入记事本txt文件。

2 个答案:

答案 0 :(得分:2)

代码页437或850等中的

Ç为128,这些编码有时被Windows控制台使用。代码页1252或1250中的相同代码128是,这是Windows图形应用程序经常使用的编码。唯一合理的方法是让您的控制台使用与图形应用程序相同的编码;为此,您可以在命令提示符下的控制台中使用命令chcp 1252ch ange c ode p年龄。“

(注意:要使chcp生效,控制台必须使用TrueType字体,例如Lucida Console或Consolas。)

答案 1 :(得分:1)

您的命令行(控制台)以及用于显示文件的任何内容都使用不同的编码。 两次写入128字节,但在some Extended ASCII variant中(另请参阅Wikipedia),它被解释为带有cedilla的C, 而a common Windows encoding将其解释为欧元符号。