fgets函式 sprintf函式

2021-10-25 13:34:40 字數 1961 閱讀 8056

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...