我正在嘗試在我的程式上列印一些 UTF-8 文本。它不顯示,當我做正常的列印功能,但它的作業我用過之后#include<fcntl.h>,#include <io.h>,setmode(_fileno(stdout), _O_U16TEXT);,轉身printf到wprintf。但是,在我使用了上面提到的那些行之后,它使我所有的正常列印行都不可見,只有 UTF-8 文本可見。我該如何解決?
這是我的代碼:
#include<fcntl.h>
#include <io.h>
#include <stdio.h>
int main (){
setmode(_fileno(stdout), _O_U16TEXT);
wprintf(L"?██████╗████████╗██╗???██╗██████╗?███████╗███╗??██╗████████╗??██╗???██╗?█████╗?████████╗██╗███╗??██╗?██████╗?\n");printf("\n");
wprintf(L"██╔════╝╚══██╔══╝██║???██║██╔══██╗██╔════╝████╗?██║╚══██╔══╝??██║???██║██╔══██╗╚══██╔══╝██║████╗?██║██╔════╝?\n");printf("\n");
wprintf(L"╚█████╗????██║???██║???██║██║??██║█████╗??██╔██╗██║???██║?????╚██╗?██╔╝██║??██║???██║???██║██╔██╗██║██║??██╗?\n");printf("\n");
wprintf(L"?╚═══██╗???██║???██║???██║██║??██║██╔══╝??██║╚████║???██║??????╚████╔╝?██║??██║???██║???██║██║╚████║██║??╚██╗\n");printf("\n");
wprintf(L"██████╔╝???██║???╚██████╔╝██████╔╝███████╗██║?╚███║???██║???????╚██╔╝??╚█████╔╝???██║???██║██║?╚███║╚██████╔╝\n");printf("\n");
wprintf(L"╚═╝????╚═════╝?╚═════╝?╚══════╝╚═╝??╚══╝???╚═╝????????╚═╝????╚════╝????╚═╝???╚═╝╚═╝??╚══╝?╚═════╝?\n");printf("\n");
wprintf(L"?██████╗██╗???██╗?██████╗████████╗███████╗███╗???███╗\n");printf("\n");
wprintf(L"██╔════╝╚██╗?██╔╝██╔════╝╚══██╔══╝██╔════╝████╗?████║\n");printf("\n");
wprintf(L"╚█████╗??╚████╔╝?╚█████╗????██║???█████╗??██╔████╔██║\n");printf("\n");
wprintf(L"?╚═══██╗??╚██╔╝???╚═══██╗???██║???██╔══╝??██║╚██╔╝██║\n");printf("\n");
wprintf(L"██████╔╝???██║???██████╔╝???██║???███████╗██║?╚═╝?██║\n");printf("\n");
wprintf(L"╚═════╝????╚═╝???╚═════╝????╚═╝???╚══════╝╚═╝?????╚═╝\n");printf("\n");
printf("THIS BECOMES INVISIBLE");
printf("how do i make it visible???");
return;
}
謝謝!
uj5u.com熱心網友回復:
不能輕易wprintf()與printf():
每個流都有一個方向。在流與外部檔案關聯之后,但在對其執行任何操作之前,流沒有方向。一旦將寬字符輸入/輸出功能應用于無方向的流,該流將成為寬方向的流。類似地,一旦將位元組輸入/輸出功能應用于沒有方向的流,該流就成為面向位元組的流。只有呼叫
freopen函式或fwide函式才能改變流的方向。(成功呼叫freopen洗掉任何方向。)
C2x § 7.21.2 4
uj5u.com熱心網友回復:
我認為這里是您的解決方案
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "");
printf("?██████╗████████╗██╗???██╗██████╗?███████╗███╗??██╗████████╗ ██╗???██╗?█████╗?████████╗██╗███╗??██╗?██████╗?\n");
printf("██╔════╝╚══██╔══╝██║???██║██╔══██╗██╔════╝████╗?██║╚══██╔══╝ ██║???██║██╔══██╗╚══██╔══╝██║████╗?██║██╔════╝?\n");
printf("╚█████╗????██║???██║???██║██║??██║█████╗??██╔██╗██║???██║??? ╚██╗?██╔╝██║??██║???██║???██║██╔██╗██║██║??██╗?\n");
printf("?╚═══██╗???██║???██║???██║██║??██║██╔══╝??██║╚████║???██║??? ?╚████╔╝?██║??██║???██║???██║██║╚████║██║??╚██╗\n");
printf("██████╔╝???██║???╚██████╔╝██████╔╝███████╗██║?╚███║???██║??? ??╚██╔╝??╚█████╔╝???██║???██║██║?╚███║╚██████╔╝\n");
printf("╚═╝????╚═════╝?╚═════╝?╚══════╝╚═╝??╚══╝???╚═╝??? ???╚═╝????╚════╝????╚═╝???╚═╝╚═╝??╚══╝?╚═════╝?\n");
printf("?██████╗██╗???██╗?██████╗████████╗███████╗███╗???███╗\n");
printf("██╔════╝╚██╗?██╔╝██╔════╝╚══██╔══╝██╔════╝████╗?████║\n");
printf("╚█████╗??╚████╔╝?╚█████╗????██║???█████╗??██╔████╔██║\n");
printf("?╚═══██╗??╚██╔╝???╚═══██╗???██║???██╔══╝??██║╚██╔╝██║\n");
printf("██████╔╝???██║???██████╔╝???██║???███████╗██║?╚═╝?██║\n");
printf("╚═════╝????╚═╝???╚═════╝????╚═╝???╚══════╝╚═╝?????╚═╝\n");
printf("THIS BECOMES INVISIBLE\n");
printf("how do i make it visible???\n");
return 0;
}
輸出:
?██████╗████████╗██╗???██╗██████╗?███████╗███╗??██╗████████╗ ██╗???██╗?█████╗?████████╗██╗███╗??██╗?██████╗?
██╔════╝╚══██╔══╝██║???██║██╔══██╗██╔════╝████╗?██║╚══██╔══╝ ██║???██║██╔??═██╗╚══██╔══╝██║████╗?██║██╔════╝?
╚█████╗????██║???██║???██║██║??██║█████╗??██╔██╗██║???██║??? ╚██╗?██╔╝██║??██║???██║???██║██╔██╗██║██║??██╗?
?╚═══██╗???██║???██║???██║██║??██║██╔══╝??██║╚██??█║???██║??? ?╚████╔╝?██║??██║???██║???██║██║╚████║██║??╚██╗
██████╔╝???██║???╚██████╔╝██████╔╝███████╗██║?╚███║???██║??? ??╚██╔╝???╚█████╔╝???██║???██║██║?╚███║╚??█████╔╝
╚═╝????╚═════╝?╚═════╝??══════╝╚═╝??╚══╝???╚═╝??? ???╚═╝????╚════╝????╚═╝???╚═╝╚═╝??╚══╝?╚═════╝?
?██████╗██╗???██╗?████??█╗████████╗███████╗███╗???███╗
?█╔════╝╚██╗?██╔╝██╔════╝╚══██╔═?╝██╔════╝████╗?████║
╚█████╗??╚████╔╝?╚█████╗????██║???█████╗??██╔████╔██║
?╚═══██╗??╚██╔╝???╚══??██╗???██║???██╔══╝??██║╚██╔╝██║
██████╔╝???██║???██████╔╝???██║???███████╗██║?╚═╝?██║
╚═════╝????╚═╝???╚═════╝????╚═╝???╚══════╝╚═╝?????╚═╝
THIS BECOMES INVISIBLE
how do i make it visible???
uj5u.com熱心網友回復:
更改時保存原始模式,重繪 并恢復模式以切換回來。您只能在 _O_U16TEXT 模式下使用寬標準輸出函式。請參閱檔案中的兩個注意事項:
Unicode 模式用于寬列印功能(例如
wprintf),不支持窄列印功能。在 Unicode 模式流上使用窄列印功能會觸發斷言。
和:
如果將資料寫入檔案流,請
fflush在_setmode用于更改模式之前使用using 顯式重繪 代碼 。如果不重繪 代碼,可能會出現意外行為。如果您尚未將資料寫入流,則不必重繪 代碼。
#include<fcntl.h>
#include <io.h>
#include <stdio.h>
int main () {
auto old_mode = _setmode(_fileno(stdout), _O_U16TEXT);
wprintf(L"?██████╗████████╗██╗???██╗██████╗?███████╗███╗??██╗████████╗ ██╗???██╗?█████╗?████████╗██╗███╗??██╗?██████╗?\n");
wprintf(L"██╔════╝╚══██╔══╝██║???██║██╔══██╗██╔════╝████╗?██║╚══██╔══╝ ██║???██║██╔══██╗╚══██╔══╝██║████╗?██║██╔════╝?\n");
wprintf(L"╚█████╗????██║???██║???██║██║??██║█████╗??██╔██╗██║???██║??? ╚██╗?██╔╝██║??██║???██║???██║██╔██╗██║██║??██╗?\n");
wprintf(L"?╚═══██╗???██║???██║???██║██║??██║██╔══╝??██║╚████║???██║??? ?╚████╔╝?██║??██║???██║???██║██║╚████║██║??╚██╗\n");
wprintf(L"██████╔╝???██║???╚██████╔╝██████╔╝███████╗██║?╚███║???██║??? ??╚██╔╝??╚█████╔╝???██║???██║██║?╚███║╚██████╔╝\n");
wprintf(L"╚═════╝????╚═╝????╚═════╝?╚═════╝?╚══════╝╚═╝??╚══╝???╚═╝??? ???╚═╝????╚════╝????╚═╝???╚═╝╚═╝??╚══╝?╚═════╝?\n");
wprintf(L"?██████╗██╗???██╗?██████╗████████╗███████╗███╗???███╗\n");
wprintf(L"██╔════╝╚██╗?██╔╝██╔════╝╚══██╔══╝██╔════╝████╗?████║\n");
wprintf(L"╚█████╗??╚████╔╝?╚█████╗????██║???█████╗??██╔████╔██║\n");
wprintf(L"?╚═══██╗??╚██╔╝???╚═══██╗???██║???██╔══╝??██║╚██╔╝██║\n");
wprintf(L"██████╔╝???██║???██████╔╝???██║???███████╗██║?╚═╝?██║\n");
wprintf(L"╚═════╝????╚═╝???╚═════╝????╚═╝???╚══════╝╚═╝?????╚═╝\n");
fflush(stdout);
_setmode(_fileno(stdout), old_mode);
printf("This is no longer invisible\n");
}
輸出:
?██████╗████████╗██╗???██╗██████╗?███████╗███╗??██╗████████╗ ██╗???██╗?█████╗?████████╗██╗███╗??██╗?██████╗?
██╔════╝╚══██╔══╝██║???██║██╔══██╗██╔════╝████╗?██║╚══██╔══╝ ██║???██║██╔══██╗╚══██╔══╝██║████╗?██║██╔════╝?
╚█████╗????██║???██║???██║██║??██║█████╗??██╔██╗██║???██║??? ╚██╗?██╔╝██║??██║???██║???██║██╔██╗██║██║??██╗?
?╚═══██╗???██║???██║???██║██║??██║██╔══╝??██║╚████║???██║??? ?╚████╔╝?██║??██║???██║???██║██║╚████║██║??╚██╗
██████╔╝???██║???╚██████╔╝██████╔╝███████╗██║?╚███║???██║??? ??╚██╔╝??╚█████╔╝???██║???██║██║?╚███║╚██████╔╝
╚═════╝????╚═╝????╚═════╝?╚═════╝?╚══════╝╚═╝??╚══╝???╚═╝??? ???╚═╝????╚════╝????╚═╝???╚═╝╚═╝??╚══╝?╚═════╝?
?██████╗██╗???██╗?██████╗████████╗███████╗███╗???███╗
██╔════╝╚██╗?██╔╝██╔════╝╚══██╔══╝██╔════╝████╗?████║
╚█████╗??╚████╔╝?╚█████╗????██║???█████╗??██╔████╔██║
?╚═══██╗??╚██╔╝???╚═══██╗???██║???██╔══╝??██║╚██╔╝██║
██████╔╝???██║???██████╔╝???██║???███████╗██║?╚═╝?██║
╚═════╝????╚═╝???╚═════╝????╚═╝???╚══════╝╚═╝?????╚═╝
This is no longer invisible
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327457.html
