字串最後乙個單詞的長度

2021-10-03 05:10:26 字數 1248 閱讀 6919

計算字串最後乙個單詞的長度,單詞以空格隔開。

輸入描述:

一行字串,非空,長度小於5000。

輸出描述:

整數n,最後乙個單詞的長度。

示例1輸入

hello world輸出5

fgets()函式

雖然用 gets() 時有空格也可以直接輸入,但是 gets() 有乙個非常大的缺陷,即它不檢查預留儲存區是否能夠容納實際輸入的資料,換句話說,如果輸入的字元數目大於陣列的長度,gets 無法檢測到這個問題,就會發生記憶體越界,所以程式設計時建議使用 fgets()。

fgets() 的原型為:

# include

char *fgets(char *s, int size, file *stream);

fgets() 雖然比 gets() 安全,但安全是要付出代價的,代價就是它的使用比 gets() 要麻煩一點,有三個引數。它的功能是從 stream 流中讀取 size 個字元儲存到字元指標變數 s 所指向的記憶體空間。它的返回值是乙個指標,指向字串中第乙個字元的位址。

其中:s 代表要儲存到的記憶體空間的首位址,可以是字元陣列名,也可以是指向字元陣列的字元指標變數名。size 代表的是讀取字串的長度。stream 表示從何種流中讀取,可以是標準輸入流 stdin,也可以是檔案流,即從某個檔案中讀取。標準輸入流就是前面講的輸入緩衝區。所以如果是從鍵盤讀取資料的話就是從輸入緩衝區中讀取資料,即從標準輸入流 stdin 中讀取資料,所以第三個引數為 stdin。

那有人會問:「用 fgets() 是不是每次都要去數有多少個字元呢?這樣不是很麻煩嗎?」

不用數!fget() 函式中的 size 如果小於字串的長度,那麼字串將會被擷取;如果 size 大於字串的長度則多餘的部分系統會自動用 '\0' 填充。所以假如你定義的字元陣列長度為 n,那麼 fgets() 中的 size 就指定為 n–1,留乙個給 '\0' 就行了。但是需要注意的是,如果輸入的字串長度沒有超過 n–1,那麼系統會將最後輸入的換行符 '\n' 儲存進來,儲存的位置是緊跟輸入的字元,然後剩餘的空間都用 '\0' 填充。所以此時輸出該字串時 printf 中就不需要加換行符 '\n' 了,因為字串中已經有了。

#include #include int main()

}printf("%d\n", n);

return 0;

}

字串最後乙個單詞的長度

計算字串最後乙個單詞的長度,單詞以空格隔開。輸入描述 一行字串。輸出描述 整數n,最後乙個單詞的長度。輸入例子 hello world輸出例子 5 乙個比較有用的c 的輸入輸出控制類,c 引入了ostringstream istringstream stringstream這三個類,要使用他們建立物...

字串最後乙個單詞的長度

link 時間限制 1秒 空間限制 32768k 計算字串最後乙個單詞的長度,單詞以空格隔開。一行字串,非空,長度小於5000。整數n,最後乙個單詞的長度。示例1 hello world 5 ac code include include includeusing namespace std cha...

字串最後乙個單詞的長度

計算字串最後乙個單詞的長度,單詞以空格隔開。一行字串,非空,長度小於5000。整數n,最後乙個單詞的長度。輸入 hello world 輸出 5 1.利用 getline 函式讀取整行字串,從字串末尾開始,向前計數,遇到空格停止 include include using namespace std...