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 每個字元常量都對應乙個整數編碼,所以表示乙個字元有兩種...