c語言裡如何讓printf輸出中文

2021-12-23 01:32:25 字數 5828 閱讀 4614

1樓:折項蒲詩蘭

一般情況下,應用程式採用的字符集為gbk,gb2312,該字符集中一個漢字由兩個位元組組成,所以在普通的c語言中,漢字是按字串進行儲存和輸出的。(另:還有utf8字符集,一個漢字由三個位元組組成,詳情可查閱utf8字符集)

char*p

="張三";

輸出多箇中文:

printf("%s\n",p);

//按字串輸出完整的資料

輸出一箇中文:

printf("%c%c",

*p,*p+1

);//按字元輸出,同時輸出兩個位元組

輸出一箇中文串的長度:

);//p變數是指標,所以,這裡輸出的是指標的寬度,一般32位機是4printf("sizeof(張)=%d\n",sizeof("張"));

// "張"是個常量字串,sizeof是得到其佔記憶體的大小,字串都有一個結束符,一個」張「字佔兩位元組,加上字串結束\0,所以,佔三個位元組的記憶體空間

printf("length

of(張)=

%d\n",

strlen("張")

);//strlen得到的是字串有效字元長度(位元組數),不包括結束符,所以,長度是兩個位元組

2樓:匿名使用者

這個跟系統有關係~如果用的是turbo c那是不可能切換到中文的~現在的vc++6.0就沒有問題,你要先看看自己的軟體版本支援不支援中文~

3樓:

就是在雙引號裡輸入中文就行了。

如printf("我的第一個c語言程式設計");

4樓:媽媽說打

用的是tc環境吧?tc的話只能是英文形式

c語言怎麼用printf輸出字串。

5樓:叫8爸爸

printf函式的一般格式

printf(格式控制字串,輸出表列);

以圖1所示為例。

圖1.函式引數包括兩部分:

【1】格式控制字串,是用雙引號括起來的字串,也稱為轉換控制字串,它指定輸出資料項的型別和格式。

它包括兩種資訊:

●格式說明項:由%和格式字元組成,如%d,%f等。格式說明總是由%字元開始,到格式字元終止。

它的作用是將輸出的資料項轉換為指定的格式輸出。輸出表列中的每個資料項對應一個格式說明項。

● 普通字元:即需要原樣輸出的字元,如逗號和換行符。

【2】輸出列表,是需要輸出的一些資料項,可以是表示式。

例如:假如a=3,b=4,那麼printf("a=%db=%d",a,b);,輸出a=3b=4。其中兩個 「%d」是格式說明,表示輸出兩個整數,分別對應變數a,b。

「a=」,「b=」是普通字元,原樣輸出。

由於printf是函式,因此,格式控制字串和輸出表列實際上都是函式的引數。printf函式的一般形式可以表示為:

printf(引數1,引數2,引數3,…,引數n)

printf函式的功能是將引數2到引數n按照引數1給定的格式輸出。

【3】格式字元 (構成格式說明項)

對於不同型別的資料項,應當使用不同的格式字元構成的格式說明項。常用的有以下幾種格式字元:(按不同型別資料,列出各種格式字元的常用用法)

【d格式符】用來輸出十進位制整數。有以下幾種用法:

● %d,按照資料的實際長度輸出。

● %md,m指定輸出欄位的寬度 (整數)。如果資料的位數小於m,則左端補以空格(右對齊);若大於m,則按照實際位數輸出。

● %-md,m指定輸出欄位的寬度 (整數)。如果資料的位數小於m,則右端補以空格 (左對齊);若大於m,則按照實際位數輸出。

● %ld,輸出長整型資料,也可以指定寬度%mld。

【o格式符】以八進位制形式輸出整數。注意:是將記憶體單元中的各位的值按八進位制形式輸出,輸出的資料不帶符號,即將符號位也一起作為八進位制的一部分輸出。

例如:inta=-1;

printf("%d,%o,%x",a,a,a);

-1的原碼:1000,0000,0000,0001。

-1在記憶體中的補碼錶示為:

1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff

輸出:-1,177777,ffff

【s格式符】用來輸出一個字串。有以下幾種用法:

● %s,輸出字串。

● %ms,輸出的字串佔m列,如果字串長度大於m,則字串全部輸出;若字串長度小於m,則左補空格 (右對齊)。

● %-ms,輸出的字串佔m列,如果字串長度大於m,則字串全部輸出;若字串長度小於m,則右補空格 (左對齊)。

● %m.ns,輸出佔m列,但只取字串左端n個字元,左補空白 (右對齊)。

● %-m.ns,輸出佔m列,但只取字串左端n個字元,右補空白 (左對齊)。

【 f 格式符】用來輸出實數 (包括單、雙精度,單雙精度格式符相同),以小數形式輸出。有以下幾種用法:

● %f,不指定寬度,使整數部分全部輸出,並輸出6位小數。注意,並非全部數字都是有效數字,單精度實數的有效位數一般為7位 (雙精度16位)。

● %m.nf,指定資料佔m列,其中有n位小數。如果數值長度小於m,左端補空格(右對齊)。

● %-m.nf,指定資料佔m列,其中有n位小數。如果數值長度小於m,右端補空格(左對齊)。

【 e 格式符】以指數形式輸出實數。可用以下形式表示:

● %e,不指定輸出資料所佔的寬度和小數位數,由系統自動指定。如6位小數,指數佔5位,-e佔1位,指數符號佔1位,指數佔3位。數值按照規格化指數形式輸出 (小數點前必須有而且只有1位非0數字)。

6樓:大野瘦子

void main()

printf輸出字串的一些格式

1、原樣輸出字串:printf("%s", str);

2、輸出指定長度的字串, 超長時不截斷, 不足時右對齊:printf("%ns", str);

注:n 為指定長度的10進位制數值

3、輸出指定長度的字串, 超長時不截斷, 不足時左對齊:printf("%-ns", str);

注:n 為指定長度的10進位制數值

4、輸出指定長度的字串, 超長時截斷, 不足時右對齊:printf("%n.ms", str);

注:n 為最終的字串輸出長度

m 為從引數字串中取出的子串長度

5、輸出指定長度的字串, 超長時截斷, 不足時左對齊是: printf("%-n.ms", str);

注:n 為最終的字串輸出長度

m 為從引數字串中取出的子串長度

7樓:福建省寧德市

printf函式的一般使用形式為:printf("輸出格式",輸出項系列);要輸出字串,則只需寫出相應的輸出格式以及輸出項系列即可,其中輸出格式為%s,輸出項系列為字串名

printf函式輸出字串的例子如下:

#include

void main()

上述程式輸出了字串 abcd

8樓:上帝來自地球

列子如下:

#include

struct student;

int main(void)

9樓:匿名使用者

假設你的結構變數為s,用s.a去訪問那個字串即可。

printf("%s", s.a);就可以列印了

10樓:烏龍魔法師

#include

main()

這樣也是可以的

,另外c還提供了函式輸入輸出字串

上面用gets(name);輸入

puts(name) 輸出也是可以的

11樓:伊·梵

沒有中文環境,用printf不能輸出漢字

一種取巧的辦法是,自己構造"你好"的點陣字模(也可以使用現成的點陣漢字型檔),然後用printf("@")輸出點陣,可以看到巨大的"你好"

圖形模式下可以使用點陣漢字型檔輸出中文,不過那不是用printf實現的

12樓:重生之狼

int number;

char name[10];

int score;

printf("%d %s %d",number,name,score);

13樓:烏鴉

#include

int main(void)

注意 如果不支援中文字型檔 會出現亂碼

14樓:匿名使用者

printf("%s\n",&a);

15樓:匿名使用者

c語言裡沒有string

只有定義個字元陣列

char name[20];

printf("%d %s %d",number,name,score);

標頭檔案stdio.h

請問在c語言中如何輸出漢字?

16樓:go我是一個吃貨

1、引入標準輸入輸出庫:sdtio.h。

2、定義字串形式的漢字(採用字元陣列儲存)。

3、使用printf函式,或者puts函式輸出字串形式的漢字。

例如:#include

int main()

/*執行結果:

輸出漢字

輸出漢字*/

17樓:功昆頡騰存

執行編譯過的可執行檔案

***.exe

***.exe

>>***.txt

詳情請查閱

dos的管道使用

這樣,***.exe的所有螢幕輸出,都將寫入***.txt檔案

18樓:匿名使用者

在程式執行的控制檯視窗的上方右擊, 選擇預設值 , 把**頁改為936 中文**頁

再次執行就可以顯示中文了

如果還是無法顯示,可能是cmd的預設**頁沒有改變 ,請參考這篇博文

19樓:匿名使用者

char的長度不夠吧...它是8位元組的...中文是16位元組的...所以...

20樓:一鏈二棍

#include

#include

#include

int main()

return 0;}

21樓:匿名使用者

ls,不是那個問題。那是自動分配的空間,肯定有空間的。

lz,我試了一下,是這麼輸出的:

#include

void main()

結果是成功的。

可能是你的編譯器有問題,是不是沒有漢字的字型檔?

22樓:沐風平浪靜

用printf;

例如:printf("我我我我");

記得要英文符號;

在c語言中,中文可以看做字串

23樓:匿名使用者

你好, c語言直接就能輸出漢字,只要你的檔案編碼支援utf-8或者其他中文編碼的話。

例如printf("你好"),就可以在dos介面上出現這個兩個中文,通常的帶介面的編譯器都會支援utf-8編碼不需要擔心亂碼的問題,如果亂碼的話有可能分為兩種情況,第一種是你的檔案編碼不支援中文,另一種就是你的中文使用char型別的進行儲存,一箇中文會佔用兩個位元組來進行儲存(也就是兩個char字元,如果用一個char字元是儲存不了一箇中文字元的)

問個C語言輸出問題printf53fn

m.nf 就是總共m位,源小數點後佔n位,7.3f 也就是總bai共佔7位,位數不足的時du候zhi右會用dao空格補足,超過的時候就會被截斷,比如123456.12345,就會得到123456.123,因為這個數整數部分就有6位了,而你的要求是小數點後要留3位,則剩下的整數部分只有4位,程式不會把...

c語言中單獨輸出轉義字元n如printfn代

格式字元裡 n 是換一來行的源意思。printf nabc 先bai 換一行,再列印du字元abc.printf abc n 先打zhi印字元abc,再換一行.printf nabc n 先 換一行,再列印字元abc,然後dao再換一行。是printf n 就是換行的意思 沒有區別,都是換行的意思 ...

c語言中printf語句以小數形式輸出單 雙精度實數的問題

這個問題其實屬於計算機組成原理的範疇了,你需要先認識到浮點數是如何儲存的。目前已知的所有的c c 編譯器都是按照ieee 國際電子電器工程師協會 制定的ieee 浮點數表示法來進行運算的。這種結構是一種科學表示法,用符號 正或負 指數和尾數來表示,底數被確定為2,也就是說是把一個浮點數表示為尾數乘以...