嵌入式學(xué)習筆記(2)--scanf使用常見(jiàn)問(wèn)題及解決方法
在學(xué)習C語(yǔ)言的時(shí)候,printf()是我們學(xué)到的第一個(gè)函數,相信“hello world”這個(gè)例子大家都不會(huì )陌生吧,接著(zhù)就是scanf()這個(gè)函數了,這個(gè)函數的功能是格式輸入,它的函數原型是:
本文引用地址:http://dyxdggzs.com/article/148534.htmint scanf(cONST char *format,…);
這個(gè)函數的基本用法這里就不說(shuō)了,這里介紹一些這個(gè)函數使用中常見(jiàn)的問(wèn)題及解決方法:
第一,連續輸入兩個(gè)或多個(gè)字符的時(shí)候,第二次輸入直接跳過(guò)了如:
int main()
{
char a,b;
scanf(“%c”,a);
scanf(“%c”,b);
return 0;
}
輸入 a回車(chē) 然后就退出了。
這個(gè)問(wèn)題有很多說(shuō)法有說(shuō)是緩沖區沒(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()函數輸入一句話(huà)的時(shí)候,如:
int main()
{
char string[50] ;
scanf(“%s”,string);
printf(“%sn”,string);
return 0;
}
輸入:hello world!
結果:hello
顯然這個(gè)結果沒(méi)有達到我們的要求。
int main()
{
char string[50] ;
scanf(“%[^n]”,string);
printf(“%sn”,string);
return 0;
}
重新編譯一下,沒(méi)有問(wèn)題了吧!
這里如果要是連續輸入多個(gè)語(yǔ)句的話(huà)也會(huì )出現連續輸入字符的那種問(wèn)題,當然解決方法也相同了。
這里是最常見(jiàn)的幾個(gè)問(wèn)題,可能還有其他的解決方法,希望和大家相互交流,能力有限有問(wèn)題希望大家多多指教。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論