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制整數輸...