如何在 C 中打印 Latin 2 代码页中的字符(无字符串)?

How to print characters from Latin 2 code page in C (without string)?

我正在努力在 C:

中打印这句话中的“ę”

...W Katalogu o nazwie "c:\roboczy" znajduje się 90% dobrze napisanych programów w C...

我的 cmd 编码页面是 CP-852(“Latin 2”)。我在 Dev-C++ 5.11 中编写,我的编译器是 TDM-GCC 4.9.2 64 位版本。

我已经使用这个脚本打印了反斜杠和 ó:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char znak1 = 92;

    printf("...W Katalogu o nazwie %\"c:%croboczy%\" znajduje sie 90%% dobrze napisanych program2w 
    w C...\n",znak1);
    return 0;
}

当然现在它只是“e”,但是无论是将“\281”直接插入 printf 还是将 0x119 放入像 znak1 这样的 char 中都没有用。

例如插入“\281”我得到:

...W Katalogu o nazwie "c:\roboczy" znajduje si☻81 90% dobrze napisanych programów w C...

添加一个 char 变量,如 znak1,值为 0x119 会产生:

...W Katalogu o nazwie "c:\roboczy" znajduje si↓ 90% dobrze napisanych programów w C...

我知道我可以简单地坚持使用 ASCII 字符并且输出将是可读的,但是我不能用这种语言做这么简单的事情让我很烦恼。我会很感激一些关于该怎么做的提示!

干杯! :)

好吧,有人向我指出“Latin 2”不是那个presice。在为 CP-852 精确搜索字符代码时,我发现、尝试并从以下位置获得结果:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char znak1 = 0xA9;
    char znak2 = 0xA2;
    
    printf("...W Katalogu o nazwie \"c:\croboczy\" znajduje si%c 90%% dobrze 
    napisanych program%cw w C...\n",znak1,znak2);
    return 0;
}

抱歉打扰了。

即使现在您已经找到了实现目标的方法,我也会解释您尝试的结果。

For example whith "1" inserted I get:

...W Katalogu o nazwie "c:\roboczy" znajduje si☻81 90% dobrze napisanych programów w C...

无论您是如何得出错误代码的,281 都不是有效的八进制数,因为它只有从 0 到 7 的数字。因此只有 </code> 被识别为 [=12] 的转义序列=], 和 <code>81 按字面打印。

顺便说一句,不用插入带有printf%c的字符,你也可以直接将转义序列写入字符串,十六进制比八进制更容易:"… znajduje si\xA9 …".