如何在 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 …"
.
我正在努力在 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 …"
.