在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

剖析C語言中scanf函數常見問題

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2021-09-24 16:45 ? 次閱讀
在寫C代碼時難免對一些知識點不熟悉,導致犯錯,今天分享幾點小知識給大家。

空白符問題

#include
int main(void){  int a;  printf("input the data ");  scanf("%d ",&a);  //這里多了一個回車符  printf("%d",a);  return 0;}

結果要輸入兩個數程序才結束,而不是預期的一個。why?

原因用空白符結尾時,scanf會跳過空白符去讀下一個字符,所以你必須再輸入一個數。這里的空白符包括空格,制表符,換行符,回車符和換頁符。所以如果你用scanf("%d ",&a)也會出現同樣的問題。解決方法這種錯誤大多是輸入的時候不小心,多注意一點就好了。這種問題也不好檢查,編譯沒有問題,一個空格也不容易看出來。當你的程序出現上面的問題時,自己對照檢查一下就可以了。

回車符也占位

#include main(){ int n = 5; char c[n]; for(int i = 0; i < n; i++)  c[i] = scanf("%c",&c[i]);  printf(c);return 0;}

如果輸入:

abc

那么循環就會“提前”結束了。

原因

輸入a和第一個回車后,a和這個回車符都留在緩沖區中。第一個scanf讀取了a,但是輸入緩沖區里面還留有一個 ,第二個scanf讀取這個 。然后輸入b和第二個回車,同樣的,第三個scanf讀取了b,第四個scanf讀取了第二個回車符。第五個讀取了c。所以五個scanf都執行了,并沒有提前結束。只不過有的scanf讀取到了回車符而已。

解決方法

1.不輸入回車符,直接輸入字符。 2.用gets()函數,如:
#includemain(){    char c[5]; gets(c); printf(c); return 0;}

scanf()函數的參數輸入類型不匹配問題

在某度見到的問題:

#includemain(){ int a=123; char c='t'; printf("input "); scanf("%d%c",&a,&c); scanf("%d%c",&a,&c); scanf("%d%c",&a,&c); printf("%d %c ",a,c); return 0;}

當輸入a 回車 后,會直接跳過下面2個scanf語句,直接輸出為:

123t

原因

對于scanf("%d%c",&a,&c),scanf語句執行時,其中有一個參數不匹配,那就從這個地方跳出,忽略這個scanf后面所有的參數,而去執行下一條語句。

解決方法

scanf()函數執行成功時的返回值是成功讀取的變量數,也就是說,你這個scanf()函數有幾個變量,如果scanf()函數全部正常讀取,它就返回幾。但這里還要注意另一個問題,如果輸入了非法數據,鍵盤緩沖區就可能還有殘余信息問題。

比如:

#include  main(){ int a=123,b; while(scanf("%d%d",&a,&b)!=2)  fflush(stdin); printf("%d %d ",a,b); return 0;}

還有個辦法:只要用scanf("%[^ ]",strings); 就可以了。很神奇吧。還要注意方括號兩側都不能加空格。

編輯:jq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140747
  • 函數
    +關注

    關注

    3

    文章

    4374

    瀏覽量

    64402
  • 代碼
    +關注

    關注

    30

    文章

    4891

    瀏覽量

    70366
  • 編譯
    +關注

    關注

    0

    文章

    676

    瀏覽量

    33828

原文標題:C語言中scanf函數的常見問題

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    深入理解C語言C語言循環控制

    改變程序的執行流程,使代碼更加靈活和可控。本文將詳細介紹這些語句的作用及其應用場景,并通過示例代碼進行說明。Part.1break語句C語言中break語句有兩種
    的頭像 發表于 04-29 18:49 ?962次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環控制

    deepin 25系統安裝常見問題

    隨著 deepin 25 系列版本的發布,我們特別推出 deepin Q&A 常見問題指南,旨在幫助您輕松應對安裝、升級及使用過程中可能遇到的常見問題
    的頭像 發表于 04-14 14:08 ?1167次閱讀
    deepin 25系統安裝<b class='flag-5'>常見問題</b>

    EE-62:在C語言中訪問短字內存

    電子發燒友網站提供《EE-62:在C語言中訪問短字內存.pdf》資料免費下載
    發表于 01-07 14:02 ?0次下載
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>語言中</b>訪問短字內存

    EE-128:C語言中的DSP:從C調用匯編類成員函數

    電子發燒友網站提供《EE-128:C語言中的DSP:從C調用匯編類成員函數.pdf》資料免費下載
    發表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的DSP:從<b class='flag-5'>C</b>調用匯編類成員<b class='flag-5'>函數</b>

    C2000常見問題解答

    電子發燒友網站提供《C2000常見問題解答.pdf》資料免費下載
    發表于 12-06 16:04 ?0次下載
    <b class='flag-5'>C</b>2000<b class='flag-5'>常見問題</b>解答

    C語言中申請的堆內存能不能自動釋放

    C語言中申請的堆內存能不能自動釋放?每次都要手動 free 太麻煩,也容易忘記。 學過 C++ 的同學,應該首先能想到智能指針。 但是這是C語言
    的頭像 發表于 11-27 09:33 ?487次閱讀

    編程語言的誤區與常見問題

    誤區一:編程語言的選擇 常見問題: 初學者在選擇編程語言時,往往會被市場上的熱門語言所吸引,而忽視了自己的實際需求和興趣。 一些開發者認為某種編程
    的頭像 發表于 11-15 09:35 ?691次閱讀

    使用C語言實現函數模板

      用C語言能不能實現一個通用的函數,既能完成整數的相加,又能完成浮點數的相加?
    的頭像 發表于 11-09 11:38 ?891次閱讀

    C語言中的socket編程基礎

    數據 步驟6:關閉socket 創建socket 在C語言中,創建socket需要使用socket()函數。這個函數需要兩個參數:域
    的頭像 發表于 11-01 16:51 ?1112次閱讀

    C語言中最常見的宏定義寫法

    如果讓你用C語言寫個宏定義,我相信大部分同學順手就能寫出define。
    的頭像 發表于 10-28 11:12 ?778次閱讀

    TVP5146常見問題

    電子發燒友網站提供《TVP5146常見問題.pdf》資料免費下載
    發表于 09-30 09:46 ?0次下載
    TVP5146<b class='flag-5'>常見問題</b>

    TFPxxx常見問題解答

    電子發燒友網站提供《TFPxxx常見問題解答.pdf》資料免費下載
    發表于 09-29 09:56 ?0次下載
    TFPxxx<b class='flag-5'>常見問題</b>解答

    OMAPL138/C6748 ROM引導加載程序資源和常見問題解答

    電子發燒友網站提供《OMAPL138/C6748 ROM引導加載程序資源和常見問題解答.pdf》資料免費下載
    發表于 09-04 09:31 ?0次下載
    OMAPL138/<b class='flag-5'>C</b>6748 ROM引導加載程序資源和<b class='flag-5'>常見問題</b>解答

    keil常見問題及解決措施

    的頭文件,添加對應頭文件即可。變量的使用在變量定義之前,在C語言中,編譯是從上到下進行的,故而無法找到變量定義,從而報錯,因此在編程之時需要注意,不要把程序調用的內容放在定義之前。引入頭
    的頭像 發表于 08-30 13:22 ?3990次閱讀
    keil<b class='flag-5'>常見問題</b>及解決措施

    c語言中從左到右結合怎么看

    C語言中,操作符的結合性(Associativity)是指當操作符在表達式中連續出現時,它們如何與操作數結合的順序。對于大多數二元操作符(即需要兩個操作數的操作符),C語言遵循兩種基
    的頭像 發表于 08-20 11:42 ?1543次閱讀
    主站蜘蛛池模板: 视频在线观看免费网站 | 天天做夜夜爽 | 91av在线免费观看 | 国产女在线 | 真实子伦视频不卡 | 亚洲 欧美 丝袜 制服 在线 | 99精品国产在热久久 | 欧美在线成人午夜影视 | 免费特黄 | 色多多在线观看播放 | 曰本女人色黄网站 | 日本亚洲欧美国产日韩ay高清 | 在线天堂在线 | 亚洲天堂亚洲天堂 | 午夜免费影视 | 国内精品视频免费观看 | 日本韩国做暖暖小视频 | 黄色毛片免费网站 | 久久这里只有精品免费视频 | 在线观看永久免费视频网站 | 丁香婷婷综合五月综合色啪 | 六月丁香婷婷综合 | 曰曰摸天天摸人人看久久久 | 午夜精品在线视频 | 天天躁夜夜躁狠狠躁躁 | 二区久久国产乱子伦免费精品 | 天天操天天干视频 | 婷婷深爱五月 | 911精品国产91久久久久 | 黄网站色视频 | 丁香啪啪天堂激情婷婷 | 色综合天天综合网国产成人网 | 国产福利精品视频 | 亚洲视频一二三 | 伊人黄色网 | bt天堂资源种子在线 | 韩国一区二区三区视频 | 亚洲一区 在线播放 | 亚洲一区免费看 | 欧美成人午夜片一一在线观看 | 久青草视频在线 |