c語言書上說格式字元s的功能是輸出字串

2021-12-23 08:02:48 字數 5670 閱讀 6311

1樓:匿名使用者

'\0'是字串輸入的時候,系統自動加上的結束符,如:

char a[10];

scanf("%s",a);

輸入123回車,則a[0]='1';a[1]='2',a[2]='3',a[3]='\0'。

也可以手工輸入,如:

char b[10];

b[0]='a',b[1]='b',b[2]='c',b[3]='\0'。

『\0'也可以直接用0,如

char c[10]=;表示陣列c中全部是0。

2樓:匿名使用者

這句話的意思是,格式字元s,只針對以 '\0' 結尾的字串才能正確工作,否則會因為無法判斷字串長度而導致各種錯誤。

例如:const char szstr = ;

這個字串szstr不能通過格式字元s 正常輸出,即使輸出正確結果「hello」,也只是碰巧結尾有個0而已。

const char szstr = ;

或者 const char szstr = ; // 系統自動計算hello長度,szstr的實際長度為 6 。

這個szstr可以由格式字元s 正常輸出。

char *pszstr = 「hello";

這個指標pszstr可以由格式字元s 正常輸出,因為在初始化的時候,系統自動將「hello」轉為字串,結尾處新增了乙個'\0'。

以此類推。

3樓:月淵冥

不是!「\0」這是乙個字串的結束字元,是預設的,每當你寫入乙個字串的時候,系統會自動在你的字串後面加乙個「\0」,它的意思是結束,你寫不寫都行,因為這是系統預設。

4樓:匿名使用者

這是轉義字元

\0 字串結束符

\n 換行符

\t 製表符

例如這樣的,一般你寫個字串都是預設自己\0結尾,但是你用char陣列乙個個字元自己加的話,\0需要自己新增

5樓:匿名使用者

不是 通常對字串的輸入輸出是用陣列來完成 陣列的長度不一定和字元的長度相同 此時計算機會對陣列所開闢的多餘的儲存單元格用0來預設!!而\0和這沒什麼關係 !!!!!它的作用和類似的\n 差不多

6樓:一生丶所愛

不是,你每定義乙個字串後,系統會自動在結尾加上乙個「\0」,作為結束標誌。輸出字串s是依次輸出字串中的每個字元,直到遇到「\0」。

7樓:

不是,這句話是指字串最後有乙個\0。輸出的則是\0之前的內容

8樓:匿名使用者

\0是字串輸入的時候,系統自動加上去的。不用手動加

9樓:匿名使用者

不用手動加\0,系統自動加,你也可以強制在需要結束的地方手動加。

10樓:匿名使用者

\0 表示的是空字元,不是字串的一部分,系統自己加上的

11樓:匿名使用者

不是,\0是系統自動加上的,如果你不加也是可以的,加了也沒問題

c語言,字元陣列中最後乙個字必須為『\0』,為什麼錯?

12樓:八哥說科技

c語言中字元陣列並沒有規定最後乙個字元為'\0',甚至可以不包含'\0',新增'\0'作為結束標誌是針對於c語言對字串的處理而言的,因此,字元陣列中最後乙個字必須為『\0』是錯誤的。

c語言中沒有字串型別,字串是存放在字元型陣列中的。在c語言中,是將字串作為字元陣列來處理的。為了測定字串的實際長度,c語言規定了乙個「字串結束標誌」,以字元'\0'作為結束標誌 。

例如:char a[8]=;把8個字元依次分別賦給c[0]~c[7]這8個元素。這樣的字元陣列長度為8,並沒有在最後新增'\0'符號,但其初始化是完全正確的。

13樓:英雄no無敵

不是字元陣列中最後乙個字元必須為'\0',如果字元陣列中存放的是乙個字串,則最後乙個字元應當'\0','\0'是結束符號,這樣當輸出這個字串時,只須輸入陣列名就可以,輸出函式會自動輸出陣列中的字元,直到遇到'\0'為止,否則你就要利用迴圈自己將字元乙個乙個的輸出,而且還要判斷該字元是不是所需要的字元,明白了麼?

14樓:

'\0'是為了關閉字串,如果不關閉,那麼就要爆掉!

所以開陣列時要開大!

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

15樓:叫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數字)。

16樓:大野瘦子

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 為從引數字串中取出的子串長度

17樓:福建省寧德市

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

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

#include

void main()

上述程式輸出了字串 abcd

18樓:上帝來自地球

列子如下:

#include

struct student;

int main(void)

19樓:匿名使用者

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

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

20樓:烏龍魔法師

#include

main()

這樣也是可以的

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

上面用gets(name);輸入

puts(name) 輸出也是可以的

21樓:伊·梵

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

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

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

22樓:重生之狼

int number;

char name[10];

int score;

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

23樓:烏鴉

#include

int main(void)

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

24樓:匿名使用者

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

C語言書上說,陣列名是指標常量,可是我每次執行程式後位址都會改變啊

視窗關閉就意味著程式的結束,所以陣列名指標就會到了最開始的位置。常量在一次執行時不變,誰告訴你,兩次執行也不變,何況 p你不用,非用 x誰告訴你這是正確用法,這是未定義的!在windows裡用vc的話,由於每個程序都有自己的位址空間,都從0x00400000開始執行,載入後資料的位址應該一樣的,雖然...

c語言中字元和字元和null是等價的麼

單引號裡兩個裡面空的,在c語言中不是合法表示,要表示空字元就是用 0 兩個雙引號中才可以是空的,表示空字串。null如果表示字元時,就是上面的空字元,也就是對應ascii碼0。null還可以表示空指標,也就是沒有進行位址初始化的指標。但實際在計算機表示中指向位址0的指標就表示沒有初始化,所以null...

在c語言中非法的字元常量是,在c語言中,非法的字元常量是A。tB17CnDxaa

你這個是 抄選擇題?那就選d吧,其 襲它的都是小於128的字元,可bai以顯示,d表示du的內容大於zhi等於128,不能顯示,你可以 與ascii表對應,每乙個字元常量有他相應的碼值。以下選項不合法的字元常量是 a 018 b c d xcc 每個字元常量都對應乙個整數編碼,所以表示乙個字元有兩種...