關於替代gets()方法進行輸入帶有空格字符串的問題

由於gets()可能會造成緩衝區溢出,所以一般來說不要使用,好像聽說最新的c++標已經開始禁用這個方法了,所以在此介紹可以替代的方法。

1.對於string數組(string s)來說:
可以使用 getline(cin, s) 進行輸入
2.對於char數組(char a[15])來說:
可以使用 cin.getline(a, 15) (15表示最大輸入的長度)
3使用fgets
有兩個方法:fgets(buf, max, fp)fgets(buf, max, stdin)
buf是一個char數組的名稱,MAX是字符串的最大長度,fp是FILE指針。
fgets()函數讀取到它所遇到的第一個換行符的後面,或者讀取比字符串的最大長度少一個的字符,或者讀取到文件結尾。然後fgets()函數向末尾添加一個空字符以構成一個字符串。

說明
1.當輸入的字符少於指定數目時,會將最後一個換行符保存在s[len-1]的位置,s[len]處恆爲’\0’。
2.當輸入的字符大於指定數目時,保存指定字符串長度-1個字符,不保存換行符,s[len]處恆爲’\0’。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章