- 相關(guān)推薦
C語(yǔ)言的字符串輸出puts()函數(shù)
puts()函數(shù)很容易用,只需把字符串地址作作為參數(shù)傳遞給它就可以了。下面我們一起來(lái)學(xué)習(xí)一下吧!
puts()函數(shù)有兩個(gè)特點(diǎn):
puts()在顯示字符串時(shí)會(huì)自動(dòng)在其末尾添加一個(gè)換行符。 puts()遇到空字符時(shí)就停止輸出,所以必須確保有空字符。
下面兩個(gè)示例分別說(shuō)明puts()的兩個(gè)特點(diǎn)。
示例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* put_out.c -- using puts() */#include <stdio.h>#define DEF "I am a #defined string."int main(void){ char str1[80] = "An array was initialized to me."; const char * str2 = "A pointer was initialized to me."; puts("I'm an argument to puts()."); puts(DEF); puts(str1); puts(str2); puts(&str1[5]); puts(str2+4); return 0;}</stdio.h> |
該程序的輸出如下:
1 2 3 4 5 6 | I'm an argument to puts().I am a #defined string.An array was initialized to me.A pointer was initialized to me.ray was initialized to me.inter was initialized to me. |
如上所示,每個(gè)字符串獨(dú)占一行,因?yàn)閜uts()在顯示字符串時(shí)會(huì)自動(dòng)在其末尾添加一個(gè)換行符。
示例2:
1 2 3 4 5 6 7 8 9 10 11 12 | /* nono.c -- no! */#include <stdio.h>int main(void){ char side_a[] = "Side A"; char dont[] = {'W', 'O', 'W', '!' }; char side_b[] = "Side B"; puts(dont); /* dont is not a string */ return 0;}</stdio.h> |
下面是該程序的一個(gè)示例,可能每次運(yùn)行結(jié)果都不一樣,不同的編譯器輸出的內(nèi)容有可能不同:
1 | WOW!Side A |
puts()如何知道在何處停止?該函數(shù)遇到空字符時(shí)就停止輸出。由于dont缺少一個(gè)表示結(jié)束的空字符,所以它不是一個(gè)字符串,因此puts()不知道何處停止。它會(huì)一直打印dont后面內(nèi)存中的內(nèi)容,直到發(fā)現(xiàn)一個(gè)空字符為止。為了讓puts()能盡快讀到空字符,我們把dont放在side_a和side_b之間,上面是該程序的一個(gè)運(yùn)行示例,不同的編譯器輸出的內(nèi)容有可能不同
通常內(nèi)存中有許多空字符,如果幸運(yùn)的話,puts()很快就會(huì)發(fā)現(xiàn)一個(gè)。但是這樣做是不靠譜的!
【C語(yǔ)言的字符串輸出puts()函數(shù)】相關(guān)文章:
C語(yǔ)言字符串的輸入輸出07-03
C語(yǔ)言字符串處理函數(shù)03-01
C語(yǔ)言之字符串處理函數(shù)03-12
C語(yǔ)言的字符串處理函數(shù)strlen()04-27
C語(yǔ)言字符串操作函數(shù)及常用的實(shí)現(xiàn)03-16
C語(yǔ)言的字符串反轉(zhuǎn)輸出是什么樣06-26
C語(yǔ)言字符串處理的庫(kù)函數(shù)有哪些06-24