色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

C語言中scanf函數的常見問題

單片機與嵌入式 ? 來源:單片機與嵌入式 ? 2023-04-23 09:43 ? 次閱讀

在寫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;
}

如果輸入:

a
b
c

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

原因

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

解決方法

1.不輸入回車符,直接輸入字符。 2.用gets()函數,如:

#include
main()
{   
 char c[5];
 gets(c);
 printf(c);
 return 0;
}

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

在某度見到的問題:

#include
main()
{
 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語句,直接輸出為:

123
t

原因

對于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); 就可以了。很神奇吧。還要注意方括號兩側都不能加空格。

審核編輯:湯梓紅

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

    關注

    180

    文章

    7608

    瀏覽量

    137122
  • 程序
    +關注

    關注

    117

    文章

    3792

    瀏覽量

    81162
  • 函數
    +關注

    關注

    3

    文章

    4338

    瀏覽量

    62745
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32906
  • C代碼
    +關注

    關注

    1

    文章

    89

    瀏覽量

    14321

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

文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言中指針函數函數指針的概念及應用示例

    C語言中,指針函數函數指針是強大且常用的工具。它們允許我們以更靈活的方式處理函數和數據,進而擴展程序的功能。
    發表于 08-16 16:14 ?955次閱讀

    C語言中函數的基本知識

    函數C語言中的基本構建塊之一,它允許我們將代碼組織成可重用、模塊化的單元。
    發表于 08-16 18:25 ?554次閱讀

    C語言常見問題

    C語言常見問題集,即C-FAQ。
    發表于 07-09 08:40

    C語言常見問題

    C語言常見問題匯總大集合
    發表于 05-10 21:37

    C語言常見問題

    C語言常見問題
    發表于 05-26 11:53

    C語言scanf函數詳解

    C語言scanf函數詳細解釋
    發表于 05-15 09:20 ?6次下載

    基于495個C語言常見問題

    基于495個C語言常見問題
    發表于 10-13 10:18 ?2次下載
    基于495個<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>常見問題</b>集

    printf和scanf什么意思

    printf()函數是格式化輸出函數, 一般用于向標準輸出設備按規定格式輸出信息。scanf()是C語言中的一個輸入
    發表于 11-09 18:02 ?3.8w次閱讀
    printf和<b class='flag-5'>scanf</b>什么意思

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

    在寫C代碼時難免對一些知識點不熟悉,導致犯錯,今天分享幾點小知識給大家。 空白符問題 ? ? ? ? ? ? ? ? ? ? # include stdio.h int main ( void
    的頭像 發表于 09-24 16:45 ?1584次閱讀

    C語言常見問題

    C語言常見問題
    發表于 03-21 14:57 ?0次下載

    C語言常見問題

    電子發燒友網站提供《C語言常見問題集.pdf》資料免費下載
    發表于 11-18 10:29 ?0次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>常見問題</b>集

    scanfC語言中的作用

    scanfC語言中的作用? scanfC語言中的輸入函數
    的頭像 發表于 11-23 14:13 ?1486次閱讀

    c語言gets函數可以輸入數字嗎

    來了解一些與輸入有關的C語言函數C語言提供了許多函數來從用戶獲取輸入,包括
    的頭像 發表于 11-24 10:00 ?1622次閱讀

    c語言怎么用scanf輸入字符串

    C語言中,我們可以使用scanf函數來接收用戶的輸入。scanf函數有很多種用法,其中一種用法
    的頭像 發表于 11-24 10:03 ?2799次閱讀

    c語言scanf的正確使用及技巧

    C語言scanf函數是用來從程序的標準輸入或文件中讀取輸入的函數。它可以從鍵盤讀取用戶輸入,并將其存儲在變量中。雖然
    的頭像 發表于 11-24 10:04 ?5262次閱讀
    主站蜘蛛池模板: 国产精品久久久久久久久免费下载 | 妖精视频免费看| 亚洲国产成人精品无码区APP| 亚洲精品乱码久久久久久v| 亚洲午夜久久久久中文字幕| 18禁在线无遮挡羞羞漫画 | 97国产蝌蚪视频在线观看| bl(高h)文| 俄罗斯粗大猛烈18P| 国产亚洲精品久久精品录音| 久久99国产精品二区不卡| 免费毛片在线视频| 日韩高清特级特黄毛片| 性感尼姑风流寺| 在线免费观看国产| yin乱教师系列合集| 国产区在线不卡视频观看| 久久精品麻豆国产天美传媒果冻| 内地同志男16china16| 手机在线亚洲日韩国产| 亚洲欧美国产综合在线| 97在线看视频福利免费| 国产传媒18精品A片在线观看| 精品人妻伦一二三区久久AAA片| 年轻的女职工在线观看| 香蕉动漫库| 9277高清在线观看视频| 国产白丝JK被疯狂输出视频| 精品午夜国产福利观看| 欧美日韩精品不卡在线观看| 小777论坛| 97亚洲狠狠色综合久久位| 国产精品麻豆高潮刺激A片| 久久受www免费人成_看片中文| 人妻天天爽夜夜爽三区麻豆A片| 亚欧成人毛片一区二区三区四区 | 全部免费特黄特色大片看片| 学生无码AV一区二区三区| 4455永久在线毛片观看| 国产成人综合在线| 老师洗澡让我吃她胸的视频|