c語言輸出寬字元
㈠ 在c語言中怎麼打出寬字元呢
用大寫的%S就可以:
wchar_t *wideChar = L"This is wide 中文顯示";
setlocale( LC_ALL, ".936" ); // 設置中文代碼頁,否則不列印中文
printf( "%s\n", wideChar ); //小寫,只打出一個字母
printf( "%S\n", wideChar ); //大寫,打出全部
㈡ 什麼是C語言中的寬字元與多位元組字元
C 語言原本是在英文環境中設計的,主要的字元集是7 位的ASCII 碼。從此開始,8 位的byte(位元組)變成最常見的字元編碼單位,但是國際化軟體必須能夠表示不同的字元,而這些字元數量龐大,無法使用一個位元組編碼,於是世界上使用各式 各樣多位元組的字元編碼集合已經有數十年了,比如用來表示「非拉丁字母」以及「非字母」的中、日、韓文字系統。在1994 年,「Normative Addenm 1」(基準增補一)的採用,讓ISO C 可以標准化兩種表示大型字元集的方法:寬字元(wide character,該字元集內每個字元使用相同的位長)以及多位元組字元(multibyte character,每個字元可以是一到多個位元組不等,而某個位元組序列的字元值由字元串或流(stream)所在的環境背景決定)。
注 意: 雖然C現在提供抽象機制,可以處理和轉換不同種類的編碼集合,但語言本身並沒有定義或指定任何編碼集合,或任何字元集(除前一節提到的基本源代碼字元集和 基本運行字元集外)。換句話說,這部分是由個別的實現版本指定如何編碼寬字元,以及要支持什麼類型的多位元組字元編碼機制。
自從1994 年的增補之後,C 不只提供char類型,還提供wchar_t類型(寬字元),此類型定義在stddef.h 頭文件中。wchar_t 類型足以表示某個實現版本擴展字元集的任何元素。
雖然C 標准沒有支持Unicode 字元集,許多實現版本使用Unicode 轉換格式UTF-16 和UTF-32(參考http://www.unicode.org) 來處理寬字元。Unicode 標准和ISO/IEC 10646標准相當接近,而且是許多既有字元集(包括7 位的ASCII)的超集。如果遵循Unicode標准,wchar_t類型至少是16或32位長,而wchar_t類型的一個值就代表一個Unicode 字元。
在多位元組字元集中,每 個字元的編碼寬度都不等,可以是一個位元組,也可以是多個位元組。源代碼字元集和運行字元集都可能包含多位元組字元,如果真的包含多位元組字元的話,那麼基本字元 集中的每個字元都只會佔用一個位元組(完全沒有多位元組的字元),空字元是唯一的例外,空字元可能會佔用任意個數的位元組(但這些位元組內全部的位都必須為0)。 多位元組字元可以被用於字元的常量、字元串字面值(string literal)、標識符(identifier)、注釋(comment),以及頭文件。許多的多位元組字元集被設計來支持特定國家的語言,例如JIS 字元集(日本業界標准,Japanese Instrial Standard)。多位元組UTF-8 字元集是由Unicode Consortium(萬國碼聯盟)定義的,可以表示Unicode 字元集的所有字元。
UTF-8 字元所使用的空間大小從一個位元組到四個位元組都有可能。多位元組字元和寬字元(也就是wchar_t)的主要差異在於寬字元佔用的位元組數目都一樣,而多位元組字元的位元組數目不等,這樣的表示方式使得多位元組字元串比寬字元串更難處理。
比 方說,即使字元'A'可以用一個位元組來表示,但是要在多位元組的字元串中找到此字元,就不能使用簡單的位元組比對,因為即使在某個位置找到相符合的位元組,此字 節也不見得是一個字元,它可能是另一個不同字元的一部分。然而,多位元組字元相當適合用來將文字存儲成文件(參見第13 章)。
C 提供了一些標准函數,可以將多位元組字元轉換為wchar_t,或將寬字元轉換為多位元組字元。比方說,如果C 編譯器使用Unicode 標準的UTF-16 和UTF-8
㈢ c語言怎麼正向反向輸出字元
這里分享下c語言正向反向輸出字元的方法。
設備:聯想h430
系統:win1064位
軟體:c語言c99
1、打開Dev-C++軟體,新建一個空白文件。
7、最後,輸出寬字元變數,用wprintf命令實現輸出。
㈣ c語言,寬字元串字面值是什麼意思
寬字元就是比單純的字元要多佔一個位元組,譬如我們知道ASCII是佔一個位元組的,拿數字0來說,它的值是0x30,如果是寬字元,它就是占兩個位元組,前面就是0x00 0x30,這樣啦。
在C/C++中修飾寬字元,就是在字元前面加上L。比如
wchar_twx=L'A';//這個就是定義了一個寬字元常量,並用A來初始化它。
wchar_twstr[]=L"IloveU";//這個是定義了一個寬字元的數組。
里同的L就表示寬字元啦。
㈤ 涓涓瀹藉瓧絎﹀湪C璇璦濡備綍杈撳叆闂棰
瀹藉瓧絎︽湁涓撻棬鐨勮緭鍏ュ嚱鏁皐scanf銆
鐢ㄦ櫘閫氱殑scanf涔熷彲浠ュ仛鍒幫紝浣嗛渶瑕佸仛澶勭悊錛屾墍浠ュ湪杈撳叆瀹藉瓧絎︾殑鏃跺欙紝鏈浣抽夋嫨榪樻槸涓撻棬鐨剋scanf銆
褰撹緭鍏ュ藉瓧絎﹀瀷鍙橀噺鏃訛紝闇瑕佷嬌鐢ㄦ牸寮忕﹀彿%lc, 杈撳叆瀹藉瓧絎︿覆鏃墮渶瑕佷嬌鐢ㄦ牸寮忕﹀彿%ls銆
鍙﹀栵紝瀹藉瓧絎︿竴鑸鐢╳printf杈撳嚭錛岃繖鏃惰緭鍑哄瓧絎﹀拰瀛楃︿覆鏃訛紝鐢%c鍜%s鍗沖彲銆
鍙傝冧唬鐮佸備笅錛
voidmain(void)
{
wchar_twc,ws[81];//瀹氫箟涓涓瀹藉瓧絎﹀彉閲忥紝鍙婁竴涓瀹藉瓧絎︽暟緇勩
wscanf(L"%lc%ls",&wc,ws);//杈撳叆鍊箋
wprintf(L"%c,%s ",wc,ws);//杈撳嚭鍊箋
}