求助c語言標準庫printf函式會不會輸出字串結

2021-03-03 21:56:11 字數 3052 閱讀 4376

1樓:

肯定不會!因為'\0'不是字串的一部分而只是字串結束的標記!

c語言中printf函式中%s是什麼意思

2樓:四捨**入

%c在c語言中代

表字元型格式符。

%s在c語言中代表字串型格式符。

%c和%s一般用在printf、sprintf等字串格式化函式中,用於決定格式化引數的資料型別。如printf("%s", a)會將變數a作為字串型別進行格式化。

printf()函式是格式化輸出函式, 一般用於向標準輸出裝置按規定格式輸出資訊。

printf()函式的呼叫格式為: printf("《格式化字串》", 《參量表》)。

擴充套件資料:c語言的格式輸出中,%c,%s這些代表要輸出的資料的資料型別,例如:

%d 十進位制有符號整數

%u 十進位制無符號整數

%f 浮點數

%s 字串

%c 單個字元

%p 指標的值

%e 指數形式的浮點數

%x, %x 無符號以十六進製制表示的整數

%0 無符號以八進位制表示的整數

%g 自動選擇合適的表示法

3樓:素顏以對

輸入輸出的字串標準型別。

這是c語言的格式輸出,%c,%s這些代表你要輸出的資料的資料型別:%d 十進位制有符號整數

%u 十進位制無符號整數

%f 浮點數

%s 字串

%c 單個字元

%p 指標的值

%e 指數形式的浮點數

%x, %x 無符號以十六進製制表示的整數

%0 無符號以八進位制表示的整數

%g 自動選擇合適的表示法

列子scanf("%s",&ch);這是輸入printf("%s",ch);這是輸出

還有其他型別,整數型別是%d,單精度浮點型別,也就是小數是%f,字元型別%c,

4樓:帷幕

是的,因為字串不是一種基本資料型別,是字元陣列,乙個字元佔據陣列中的乙個位置。給了指標後字元陣列的首位址就被得到了,然後就會從首位址列印到\0出現。沒有\0就會因為未定義而出現亂碼。

5樓:匿名使用者

c語言中printf函式中%s表示按照字串的方式輸出,s表示string

printf()函式介紹:

printf()函式是格式化輸出函式, 一般用於向標準輸出裝置按規定格式輸出資訊。

printf()函式的呼叫格式為: printf("《格式化字串》", 《參量表》)。

格式輸出,它是c語言中產生格式化輸出的函式(在 stdio.h 中定義)。用於向終端(顯示器、控制台等)輸出字元。

格式控制由要輸出的文字和資料格式說明組成。要輸出的的文字除了可以使用字母、數字、空格和一些數字符號以外,還可以使用一些轉義字元表示特殊的含義。

比如%d表示符號型的int,%u表示無符號的int,%f表示浮點型的資料

詳細的介紹參看http://baike.baidu.

***/link?url=nklihgogw4**iuhhuzygcwysnuzbea-rcch8vkhuzhjwfxdgeuj-y58ba638pbqjhjwdr4hj5tjo0dw8fl2quk

6樓:匿名使用者

因為c沒有字串,於是猥瑣的使用字元陣列的起始下標當做所謂的字串的指標。

7樓:匿名使用者

printf函式中%s是輸出字串

8樓:書到用時晚

記住就好、不用深究、等以後接觸多了、就不會在意這個叻、只要記著輸出的是從字串的首位址開始輸出。

c語言中,printf函式如何處理%s?

9樓:yx陳子昂

c語言中,printf函式處理%s的函式原型

如下:case 's':

s = va_arg(args, char *);

if (!s) s = "";

len = strnlen(s, precision);

if (!(flags & left)) while (len < field_width--) *str++ = ' ';

for (i = 0; i < len; ++i) *str++ = *s++;

while (len < field_width--) *str++ = ' ';

continue;

首先判斷列印字串是否為專空屬,如果為空,則填充"",然後把列印內容拷貝到列印快取區內。

10樓:匿名使用者

'\0'是字串的結

bai尾標誌,佔一字du節,值為0。zhiprintf("%s",arr)語句指定了字串的開始位址daoarr,函式向後逐字

內節尋找值為容0的位元組,找到後把之間的位元組按字元解釋並輸出。

你給出的情況,先輸出abc,後面輸出什麼,要看記憶體的實際情況,可能什麼也不輸出,也可能輸出一些亂碼。

11樓:可可阿文

c編譯器自動處理的,這個你不用擔心,如果你定義的四個字串陣列,它就自己預設,如果定義的是字元陣列就沒有\0這一說了

12樓:匿名使用者

這種情況如果你直接用printf("%s", arr);列印出來會出現記憶體洩漏,不應該那樣寫。你就用下面的方法實現:

for(i = 0; i < 3; i++)

13樓:我是不是師兄

會從bai陣列arr的首位址開始du

乙個位元組乙個位元組的zhi讀取並輸出 一直到記憶體dao中某個位元組為內0才停止

所以有容時候 會輸出亂碼 因為這個位元組裡面是儲存什麼都有可能 有時候會彈出 某位址不可讀

那是作業系統的記憶體保護機制 已經到一些沒讀取許可權的記憶體 指標狂飆 就是這下場

你可以在非除錯模式下 執行一下** 看看情況

14樓:回憶

%s是輸出以arr為首位址的一串字元!

c語言新手求助,C語言程式設計 新手求助

因為 中用錯了輸出控制符,應該將printf f n num 中的 f改成 d才是。此程式中,已定義num為整型變數,而在後面的printf 輸出時,型別被描述為浮點數 f 這樣寫法是有問題的。c語言中,整型變數和浮點型變數在記憶體中的存放格式是不一樣的。整型變數表示的是乙個16位長的二進位制數,在...

神奇的C語言七 為什麼C 要拋棄printf

1 最重要的原因當然是c 提供了流物件 和 它們代表了新觀念。流物件能輸出物件,而printf函式和scanf函式不能。2 printf本身有問題,它不是型別安全的。舉個例子。下面的程式會輸出什麼呢?include int main 這個時候我們需要對a進行強制型別轉換,否則輸出結果就不是我們想要的...

c語言 printf05d n ,a 什麼意思

d是空輸出格式,後面接05,表示輸出的數有五位,不夠用0補!注意如果去掉0,就變成用空格補!如果是.5,就表示小數點後保留5位!這都是常見的輸出處理 學習愉快哦!1 如bai果int a 1234,printf 05d n a 輸出du結果為 zhi 01234 2 d表示以有符號十進dao制整數輸...