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后按下回車
②用空格隔開(kāi)之后再按下回車
相信和我一樣的大部分初學(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++連接mysql5.6的出錯(cuò)問(wèn)題總結(jié)
下面小編就為大家?guī)?lái)一篇c++連接mysql5.6的出錯(cuò)問(wèn)題總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦2016-12-12C++哈希應(yīng)用之位圖,哈希切分與布隆過(guò)濾器詳解
這篇文章主要為大家詳細(xì)介紹了C++哈希應(yīng)用中的位圖、哈希切分與布隆過(guò)濾器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下2023-04-04C語(yǔ)言實(shí)現(xiàn)頁(yè)面置換算法
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)頁(yè)面置換算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12Ubuntu20.04安裝使用jsoncpp、json-c庫(kù)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Ubuntu20.04安裝使用jsoncpp、json-c庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作就有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-04-04C語(yǔ)言之結(jié)構(gòu)體定義 typedef struct 用法詳解和用法小結(jié)
這篇文章主要介紹了C語(yǔ)言的結(jié)構(gòu)體定義typedef struct用法詳解和用法小結(jié),typedef是類型定義,typedef struct 是為了使用這個(gè)結(jié)構(gòu)體方便,感興趣的同學(xué)可以參考閱讀2023-03-03