我想用C打印交点符号(∩),但是ASCII table上不存在。问题是我尝试的所有内容都会生成一些奇怪的废话输出,例如Ôê®。
起初,我尝试将其放在printf函数上:
#include <stdio.h>
int main(void)
{
printf("∩");
return 0;
}
此操作不起作用后,我在互联网上搜索了charachter编码并找到了here,所以我决定尝试一下:
#include <stdio.h>
int main(void)
{
printf("\xE2\x88\xA9");
return 0;
}
它仍然不起作用。经过更多研究后,我认为更改语言环境将对我有所帮助,我尝试这样做:
#include <locale.h>
#include <stdio.h>
int main(void)
{
setlocale(LC_ALL, "UTF-8");
printf("\xE2\x88\xA9");
return 0;
}
我也尝试过:
#include <locale.h>
#include <stdio.h>
int main(void)
{
setlocale(LC_ALL, "");
printf("\xE2\x88\xA9");
return 0;
}
然后我尝试了这个:
#include <locale.h>
#include <stdio.h>
int main(void)
{
setlocale(LC_ALL, NULL);
printf("\xE2\x88\xA9");
return 0;
}
然后我在互联网上找到了一些页面(不幸的是,我忘记了它的位置并且无法再次找到它),该页面告诉我使用名为wprintf的函数,我这样做了:
#include <locale.h>
#include <wchar.h>
#include <stdio.h>
int main(void)
{
setlocale(LC_ALL, "UTF-8");
wprintf(L"\xE2\x88\xA9");
return 0;
}
所有先前的代码将产生相同的输出:
Ôê®
如果有人可以帮助我打印“∩”字符,我将不胜感激。
编辑:根据建议,我尝试使用windows.h中的函数将代码页设置为所需的代码,但它仍然仅在代码编辑器上有效:
#include <stdlib.h>
#include <locale.h>
#include <wchar.h>
#include <stdio.h>
#include <windows.h>
#if defined(_WIN32)
#define W 1
#else
#define W 0
#endif
int main(void)
{
setlocale(LC_ALL, "UTF-8");
if (W) // If the OS is windows
{
SetConsoleOutputCP(CP_UTF8);
wprintf(L"\xE2\x88\xA9\n");
SetConsoleOutputCP(850); // Set it back to normal to print other stuff later
}
return 0;
}
就像我说的那样,我的评论中所述的问题仍然存在,它可以在代码编辑器上运行,但是无论何时我在winows命令提示符下运行它时,都不会如此。