char *fgets (char *__restrict __s, int __n, file *__restrict __stream)
第乙個引數為資料存放的陣列,第二個引數為最大長度,第三個引數為輸入源,我們從鍵盤讀入,引數為stdin
可以看到fgets()讀取的字串長度包含了結尾的 『\0』,遍歷陣列時要注意下標越界。strlen(a)-1 為字串實際長度
linux換行是\n,十六進製制數值是:0a
通過乙個程式
char a[7]
;fgets
(a,7
,stdin);
char
*s="hello"
;int lengtha =
strlen
(a)-1;
printf
("a=%d\n"
,strlen
(a))
;printf
("s=%d\n"
,strlen
(s))
;printf
("lena:%d\n"
,lengtha)
;printf
("start: %c\n"
,a[0])
;printf
("end: %c\n"
,a[lengtha-1]
);int j;
for(j=
0;j<
strlen
(a);j++
)
我們使用該函式 當資料不滿的時候輸入123
輸出的結果表示為
第一種情況strlen一共有4個 分別為1 2 3 和\n
如果輸入的字串長度沒有超過 n–1,那麼系統會將最後輸入的換行符 『\n』 儲存進來 在第一種情況下最後乙個數是a[lengtha-1] 因為沒有超過的情況下預設最後乙個為/n
第二種情況資料超過或者剛好等於n-1 資料就會進行擷取 保留資料部分
在這種情況下 最後乙個資料就是a[lengtha] 因為這是的資料倒數第二位不是\n
1.若有定義char s[5]
=;則printf
(「%s」,s)
;的輸出結果為( )
a、輸出字串hello後亂碼
b、hello
c、hd、輸出陣列s的位址
//a 以%s輸出字元陣列s,會輸出字串,但陣列大小為5,結尾沒有』\0』結束符,會出現亂碼
2.若有定義和語句:
char s[10]
; s=
"abcd"
;printf
("%s\n"
,s);
那麼結果是(以下u代表空格)( )。
a、輸出abcd
b、輸出a
c、輸出abcduuuuu
d、編譯不通過
//d 字元陣列不能直接賦入字串,只能在初始化時賦入字串。
以下選項中,不能正確賦值的是( )。
a、char s1[10]
;s1=
"ctest"
;b、char s2=
;c、char s3[20]
="ctest"
;d、char
*s4=
"ctest\n"
//字元陣列只能在初始化時才能用等號賦入字串。
include
#include
intmain()
輸出結果/dev/pin sprintf函式詳解
printf 可能是許多程式設計師在開始學習c 語言時接觸到的第二個函式 我猜第乙個是main 說 起來,自然是老朋友了,可是,你對這個老朋友了解多嗎?你對它的那個孿生兄弟sprintf 了解多 嗎?在將各種型別的資料構造成字串時,sprintf 的強大功能很少會讓你失望。由於sprintf 跟pr...
sprintf函式詳解
sprintf 將字串格式化。標頭檔案 include 語法 int sprintf string format,mixed args 返回值 字串長度 strlen 1.處理字元方向。負號時表時從後向前處理。2.填空字元。0 的話表示空格填 0 空格是內定值,表示空格就放著。3.字元總寬度。為最小...
sprintf 函式詳解
用處 把字串進行多種型別的格式化 用於 處理xml資料格式時,需要用到他來格式化等等 基本語法格式 sprintf 格式化型別 str1 str2 先看一下型別參照表,也就是要轉換成什麼型別的格式 這是轉換格式的型別參照表 先舉個最簡單的案例 str1 1234 echo sprintf hello...