新聞中心

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

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

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

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

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

int scanf(cONST char *format,…);

這個函數(shù)的基本用法這里就不說了,這里介紹一些這個函數(shù)中常見的問題及

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

int main()

{

char a,b;

scanf(“%c”,a);

scanf(“%c”,b);

return 0;

}

輸入 a回車 然后就退出了。

這個問題有很多說法有說是緩沖區(qū)沒有清除,有說stdin這個流的問題,這里我們不去追究,這里介紹幾個這種問題的

int main()

{

char a,b;

scanf(“n%c”,a);

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

return 0;

}

這次再編譯一下就沒有問題了。

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

int main()

{

char string[50] ;

scanf(“%s”,string);

printf(“%sn”,string);

return 0;

}

輸入:hello world!

結(jié)果:hello

顯然這個結(jié)果沒有達到我們的要求。

int main()

{

char string[50] ;

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

printf(“%sn”,string);

return 0;

}

重新編譯一下,沒有問題了吧!

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

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

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


評論


相關(guān)推薦

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

關(guān)閉