C++輸入空格字符串的三種解決方法
一.gets和fgets
char * gets ( char * str ); char * fgets ( char * str, int num, FILE * stream );
1. gets 是從第?個(gè)字符開(kāi)始讀取,?直讀取到 \n 停?,但是不會(huì)讀取 \n ,也就是讀取到的內(nèi)容中沒(méi)有包含 \n ,但是會(huì)在讀取到的內(nèi)容后?動(dòng)加上 \0 。
2. fgets 也是從第?個(gè)字符開(kāi)始讀取,最多讀取 num-1 個(gè)字符,最后?個(gè)位置留給 \0 ,如果num 的?度是遠(yuǎn)?于輸?的字符串?度,就會(huì)?直讀取到 \n 停?,并且會(huì)讀取 \n ,將 \n 作為讀取到內(nèi)容的?部分,同時(shí)在讀取到的內(nèi)容后?動(dòng)加上 \0 。
#include <cstdio> //?案1 int main() 1 2 3 4{ char arr[10] = {0}; gets(arr); printf("%s\n", arr); return 0; } //替代?案-?法2 #include <cstdio> int main() { char arr[10] = {0}; fgets(arr, sizeof(arr), stdin); printf("%s\n", arr); return 0; }
上述兩個(gè)程序,同樣在運(yùn)?起來(lái)后,在控制臺(tái)窗?中輸?: abc def ,按回?,?案1和?案2中arr 數(shù)組的內(nèi)容中差異如下:
二. 還是利用scanf
當(dāng)然C語(yǔ)?中使? scanf 函數(shù)其實(shí)也能做到讀取帶有空格的字符串,只是不常??已。?式就是將 "%s" 改成 "%[^\n]s" ,其中在 % 和 s 之間加上了 [^\n] ,意思是?直讀取,直到遇到\n ,這樣即使遇到空格也就不會(huì)結(jié)束了。
這種?式讀取,不會(huì)將 \n 讀取進(jìn)來(lái),但是在讀取到的字符串末尾加上 \0 。
#include <cstdio> int main() { char arr[10] = "xxxxxxxx"; scanf("%[^\n]s", arr); printf("%s\n", arr); return 0; }
三. getchar
使? getchar 逐個(gè)字符的讀取,也是可以讀取?個(gè)字符串的。
#include <cstdio> int main() { char arr[10] = { 0 }; int ch = 0; int i = 0; while ((ch = getchar()) != '\n') { arr[i++] = ch; } printf("%s\n", arr); return 0; }
到此這篇關(guān)于C++輸入空格字符串的三種解決方法的文章就介紹到這了,更多相關(guān)C++輸入空格字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)高校教室管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)高校教室管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C語(yǔ)言 數(shù)據(jù)結(jié)構(gòu)與算法之字符串詳解
這篇文章將帶大家深入了解C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法中的字符串,文中主要是介紹了字符串的定義、字符串的比較以及一些串的抽象數(shù)據(jù)類(lèi)型,感興趣的可以學(xué)習(xí)一下2022-01-01C語(yǔ)言實(shí)現(xiàn)制作通訊錄(新手推薦)
本文推薦給C語(yǔ)言學(xué)習(xí)到結(jié)構(gòu)體的新手們,供其練習(xí)。這篇文章主要是利用C語(yǔ)言制作一個(gè)簡(jiǎn)單的通訊錄功能,感興趣的小伙伴可以跟隨小編一起了解一下2022-09-09C++實(shí)現(xiàn)動(dòng)態(tài)分配const對(duì)象實(shí)例
這篇文章主要介紹了C++實(shí)現(xiàn)動(dòng)態(tài)分配const對(duì)象實(shí)例,包括了const對(duì)象的創(chuàng)建、刪除及應(yīng)用實(shí)例,需要的朋友可以參考下2014-10-10Linux環(huán)境下段錯(cuò)誤的產(chǎn)生原因及調(diào)試方法小結(jié)
借此機(jī)會(huì)系統(tǒng)學(xué)習(xí)了一下,這里對(duì)Linux環(huán)境下的段錯(cuò)誤做個(gè)小結(jié),方便以后同類(lèi)問(wèn)題的排查與解決2011-11-11C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作的相關(guān)資料,需要的朋友可以參考下2017-05-05C++面經(jīng)之什么是RAII面試問(wèn)題解析
這篇文章主要介紹了C++面經(jīng)之什么是RAII面試問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06