新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式學(xué)習(xí)筆記(2)--scanf使用常見(jiàn)問(wèn)題及解決方法

嵌入式學(xué)習(xí)筆記(2)--scanf使用常見(jiàn)問(wèn)題及解決方法

作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò) 收藏

C語(yǔ)言的時(shí)候,printf()是我們學(xué)到的第一個(gè)函數(shù),相信“hello world”這個(gè)例子大家都不會(huì)陌生吧,接著就是scanf()這個(gè)函數(shù)了,這個(gè)函數(shù)的功能是格式輸入,它的函數(shù)原型是:

本文引用地址:http://www.butianyuan.cn/article/148534.htm

int scanf(cONST char *format,…);

這個(gè)函數(shù)的基本用法這里就不說(shuō)了,這里介紹一些這個(gè)函數(shù)中常見(jiàn)的問(wèn)題及

第一,連續(xù)輸入兩個(gè)或多個(gè)字符的時(shí)候,第二次輸入直接跳過(guò)了如:

int main()

{

char a,b;

scanf(“%c”,a);

scanf(“%c”,b);

return 0;

}

輸入 a回車(chē) 然后就退出了。

這個(gè)問(wèn)題有很多說(shuō)法有說(shuō)是緩沖區(qū)沒(méi)有清除,有說(shuō)stdin這個(gè)流的問(wèn)題,這里我們不去追究,這里介紹幾個(gè)這種問(wèn)題的

int main()

{

char a,b;

scanf(“n%c”,a);

scanf(“n%c”,b);或 scanf(“ %c”,b);%c前有空格

return 0;

}

這次再編譯一下就沒(méi)有問(wèn)題了。

第二,scanf()函數(shù)輸入一句話的時(shí)候,如:

int main()

{

char string[50] ;

scanf(“%s”,string);

printf(“%sn”,string);

return 0;

}

輸入:hello world!

結(jié)果:hello

顯然這個(gè)結(jié)果沒(méi)有達(dá)到我們的要求。

int main()

{

char string[50] ;

scanf(“%[^n]”,string);

printf(“%sn”,string);

return 0;

}

重新編譯一下,沒(méi)有問(wèn)題了吧!

這里如果要是連續(xù)輸入多個(gè)語(yǔ)句的話也會(huì)出現(xiàn)連續(xù)輸入字符的那種問(wèn)題,當(dāng)然解決方法也相同了。

這里是最常見(jiàn)的幾個(gè)問(wèn)題,可能還有其他的解決方法,希望和大家相互交流,能力有限有問(wèn)題希望大家多多指教。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉