C語(yǔ)言使用scanf連續(xù)輸入字符串出現(xiàn)的問(wèn)題
#include<stdio.h>
int main()
{
char a,b;
scanf("%c",&a);
scanf("%c",&b);
printf("%c,%c",a,b);
}
一段看上去很簡(jiǎn)單的代碼,即使是C語(yǔ)言初學(xué)者也能看懂。
可是在運(yùn)行的時(shí)候卻出現(xiàn)了問(wèn)題:
①輸入a后按下回車

②用空格隔開之后再按下回車

相信和我一樣的大部分初學(xué)者,看著自己天衣無(wú)縫的代碼,百思不得其解。
讓我們先來(lái)看看,在百度百科中,對(duì)于scanf函數(shù)的解釋

在①中,我們只輸入了a和回車。而這時(shí),回車便留在了緩沖區(qū)中,直接被下一個(gè)scanf所吸收。在②中,輸入了a、空格、b和回車,在這種情況下,我們輸入的空格則進(jìn)入了緩沖區(qū)中,導(dǎo)致b無(wú)法被讀取,導(dǎo)致出現(xiàn)了問(wèn)題。
解決方法
①在第二個(gè)%c前加上空格,來(lái)抵消之前輸入的空格/回車
#include<stdio.h>
int main()
{
char a,b;
scanf("%c",&a);
scanf(" %c",&b); //在%c前加上一個(gè)空格
printf("%c,%c",a,b);
}
②在第一個(gè)%c后面加上一個(gè)*c,忽略下一個(gè)讀入的字符
#include<stdio.h>
int main()
{
char a,b;
scanf("%c*c",&a);
scanf("%c",&b);
printf("%c,%c",a,b);
}
③用fflush清空緩沖區(qū)
#include<stdio.h>
int main()
{
char a,b;
scanf("%c",&a);
fflush(stdin);
scanf("%c",&b);
printf("%c,%c",a,b);
}
④用getchar吸收字符
#include<stdio.h>
int main()
{
char a,b;
scanf("%c",&a);
getchar();
scanf("%c",&b);
printf("%c,%c",a,b);
}
除方法①以外,其他三種方法不僅在使用scanf時(shí)有效,在使用getchar碰到類似問(wèn)題的時(shí)候也有效,有興趣的讀者可以自行嘗試。
到此這篇關(guān)于C語(yǔ)言使用scanf連續(xù)輸入字符串出現(xiàn)的問(wèn)題的文章就介紹到這了,更多相關(guān)C語(yǔ)言scanf連續(xù)輸入字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++中接收return返回來(lái)的數(shù)組元素方法示例
return是C++預(yù)定義的語(yǔ)句,它提供了種植函數(shù)執(zhí)行的一種放大,最近學(xué)習(xí)中遇到了相關(guān)return的內(nèi)容,覺(jué)著有必要總結(jié)一下,這篇文章主要給大家介紹了關(guān)于C/C++中如何接收return返回來(lái)的數(shù)組元素的相關(guān)資料,需要的朋友可以參考下。2017-12-12
C++標(biāo)準(zhǔn)之(ravalue reference) 右值引用介紹
臨時(shí)對(duì)象的產(chǎn)生和拷貝所帶來(lái)的效率折損,一直是C++所為人詬病的問(wèn)題,下面簡(jiǎn)單地介紹一下Copy Elision、RVO,對(duì)此不感興趣的可以直接跳過(guò)2012-11-11
Qt圖片繪圖類之QPixmap/QImage/QPicture詳解
這篇文章主要為大家詳細(xì)介紹了Qt圖片繪圖類中QPixmap、QImage和QPicture的使用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03
C++?move()函數(shù)及priority_queue隊(duì)列使用記錄
move(obj)函數(shù)的功能是把obj當(dāng)做右值處理,可以應(yīng)用在對(duì)象的移動(dòng)上,這篇文章主要介紹了C++?move()函數(shù)及priority_queue隊(duì)列使用記錄,需要的朋友可以參考下2023-01-01
C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別
本文主要介紹了C++ 虛函數(shù)與純虛函數(shù)的使用與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
ubuntu系統(tǒng)下C++調(diào)用matlab程序的方法詳解
學(xué)習(xí)c++與matlab混合編程一般是通過(guò)c++調(diào)用matlab函數(shù),因?yàn)閙atlab具有強(qiáng)大的數(shù)學(xué)函數(shù)庫(kù),然而vc++具有界面設(shè)計(jì)靈活的優(yōu)點(diǎn),下面這篇文章主要給大家介紹了關(guān)于在ubuntu系統(tǒng)下C++調(diào)用matlab程序的方法,需要的朋友可以參考下。2017-08-08

