C語言中正確使用輸入函數scanf

有錯誤大家多指點,大家共同努力。

C語言中輸入函數scanf使用不當,會出現各種錯誤,正確使用,會提高效率,現把一些注意事項,正確的使用方法和經驗分享給大家.

在C語言中空白字符括:空格、換行(
)、回車(
)、水平制表符( )、換頁符()、垂直制表符()。在scanf讀取的一個參數是數時,開始輸入的空白字符會被忽略,讀取數字直到遇到第一字符不是數字就會停止;讀取字符串時,開始的空白字符也會被忽略掉,讀取字符【0-9a-zA-Z....](各種可顯示字符),直到遇到不是字符停止匹配,(包括空白字符,通常為回車換行),並且在字符串尾添加空字符,(空字符是字符串輸出結束字符).scanf遇到停止字符時,把停止字符還放入鍵盤字符緩存區中。舉例如下:

#include "stdio.h"

#include "conio.h"

main()

{

int a;

char x[20];

printf("Hello, world
");

scanf("%d%s",&a,x);【1】

printf("%s",x);

getch();

}

如果輸入.......123.......hello...
(.為空白字符)

那麼結果:a = 123  x[20] = "hello" x[5]=空字符

如果在格式字符串中包含空白字符時,一個或多個連續空白字符貪婪匹配空白字符直到遇到第一個不是空白字符;格式字符串中包含可顯字符時,那麼精確匹配。如果不匹配,把第一個不匹配的字符放入輸入流中,異常退出。例如:

把上面的【1】改為scanf("%dabc%s",&a,x);

輸入.......123abc.......hello...
(.為空白字符),結果同上。如果輸入了

.......123ab.......hello...
(.為空白字符) 那麼結果:a=123,字符數組是亂碼。

還有一種情況:當此次輸入結束時,不管正確與否,都要刷新緩存區,否則有滯留字符干擾下一次的輸入。fflush(stdin);rewind(stdin);都可以清空輸入流緩存區。希望大家多做實驗,這樣經驗多一點,出錯的機率就小一點。謝謝大家!

相關文章

  1. C語言中正確使用Printf和Scanf函數

    C語言中常常會用到Printf和Scanf函數,但有時候莫名其妙程序無法運行,也找不出錯誤在什麼地方.實際上,Printf和Scanf函數的使用有很多限制,不知不覺之間,Printf和Scanf這兩個 ...
  2. 如何正確使用c語言中的循環結構?

    在c語言中,循環結構程序也是比較常用的程序,下面和大家聊聊如何正確使用c語言中的循環結構呢? 方法/步驟 在生活中也會經常遇到循環結構的情況,比如車間流水線的工人會一直判斷上一工位完成的機器是否流傳到 ...
  3. 如何在python語言中使用輸入函數作為傳參值返回

    一般情況下,python語言中的input方法返回值為一個字符串,但是可以使用其他的方法將返回值轉換成需要的類型.如果需要用戶輸入一個函數,利用input進行轉換成字符串,然後使用eval()轉換為函 ...
  4. 在R語言中給向量大小排序

    在R語言的統計計算中 常常需要將數據以一定的順序排列 這裡介紹如何給向量按大小排列 工具/原料 Rstudio 計算機 方法/步驟 先簡單隨便列出一些向量 > a <-c(3,44,23, ...
  5. C語言中最簡單的Hello world代碼編寫

    C語言是一種應用很廣泛的計算機語言,有著很好的跨平台的特性,有一些嵌入式系統也是通過C語言進行編程,而"Hello world"是程序猿們會的第一個代碼. 工具/原料 Visual ...
  6. 易語言中怎樣讓按鈕彈出網頁

    我們在日常用電腦的時候一不小心打開一個軟體,就會彈出很多的網頁,在這裡我會教大家怎麼實現,其實我也是新手,高手勿噴. 工具/原料 易語言 網頁 方法/步驟 先打開易語言,創建windows程序窗口. ...
  7. C語言中的整型常量與整型變量

    C語言程序中整型常量與整型變量的特徵及分類. 方法/步驟 整型常量:C語言程序中整型常量分為十進位整型常量.八進位整型常量.十六進位整型常量3種表現形式. 1.十進位整型常量由一連串的0~9數字組成. ...
  8. 如何在R語言中安裝quantstrat包?

    在win10系統中,如何在R語言下安裝quantstrat包呢? 工具/原料 電腦 win7或者win10 R 語言3.10 方法/步驟 打開R語言,在Rconsole中輸入 install.pack ...
  9. C語言中嵌入彙編

    以下所說嵌入的彙編都是GUN 的C語言中嵌入ARM彙編. 方法/步驟 以下所說嵌入的彙編都是GUN 的C語言中嵌入ARM彙編. 1)2個參數的內嵌語句 這種形式的彙編用於簡單的語句,參數限制輸入和輸出 ...
  10. Excel單元格中正確顯示身份證號的技巧

    對於超過12位的數字(包括12位),Excel會自動以科學記數法顯示,看起來不舒服.當我們要把帶有身份證號的Word表格複製到Excel中去,就會遇到這種情況.那麼,應該怎樣保持身份證號的原貌呢? 一 ...
  11. 易語言中的時鐘怎樣用

    易語言中的時鐘怎樣用 其實時鐘周期就是一個計算時間的 下面我就介紹下怎麼用 工具/原料 易語言 方法/步驟 打開易語言 進入軟體界面 添加一個按鈕組建 添加一個時鐘組建 添加一個標籤 點擊按鈕進入編輯 ...
  12. 易語言中如何讀取當前網絡時間(北京時間)

    在寫程序時,如果需要設置使用期限,就需要判斷當前的時間,當然不是電腦的時間,而是北京時間.電腦時間是可以人為改動,但北京時間是沒法改的,所以這個功能很重要,下面是實現代碼: .版本 2 .支持庫 in ...
  13. 如何在C語言中輸出字符

    上一篇提到如何編寫C語言的第一課,這次我將進一步深入講解C語言的其他知識,比如如何在C語言中如何用變量的方式來輸出大寫字母"A". 工具/原料 Microsoft Visual C ...
  14. 易語言中文本語言轉換 發音狀態的使用方法

    根據網上查找資料和卡看支持庫幫助和自己探索,終於讓我編成了監控發音狀態的例程. 我只能晚上學習一下易語言,由於喜歡用手機上的訊飛聽小說,便想自己開干.發音狀態這個問題相對於大神而言,僅僅是隨手就能寫成 ...
  15. c語言中的常用庫函數信息分析

    我們在寫c語言的時候,經常要使用一些庫函數,雖然我們自己也可以進行寫函數,但是,使用已經存在的函數,可以降低我們的工作量和我們代碼出現問題 的機率,一般情況下,我們都會使用庫函數,但是對於一些初學者而 ...
  16. C語言中輸入年月日,判斷這一天是一年的第幾天

    在這裡我教大家C語言中使用代碼實現"輸入年月日,判斷這一天是一年的第幾天" 工具/原料 VC++ T C 方法/步驟 定義年月日和其他變量 int day,month,year,s ...
  17. 在C語言中編寫函數,求出圓周率Pi的近似值

    C++是一種應用特別廣泛的高級語言.現在請編寫程序:根據下列公式求出圓周率Pi的近似值.要求如下: pi/4=1-1/3+1/5-1/7.... 直到某項的絕對值小於1e-6停止疊代,輸出pi近似值. ...
  18. 易語言基礎——易語言中的時鐘功能怎麼用?

    這節課我們來學習編輯框和時鐘的用法,這次我們的例子是通過時鐘控制文字顏色變化,同時數字自動增加. 工具/原料 易語言編程軟體 方法/步驟 我們先在窗口程序上添加三個東西,一個編輯框,一個便簽和一個時鐘 ...
  19. 如何調用python設計語言中有關串口模塊serial

    serial模塊是python語言中操作串口的一個模塊,可以調用這個模塊的方法進行串口通訊,發送數據和接收數據.下面主要講述如何調用serial模塊中的方法屬性,操作如下: 工具/原料 python ...
  20. 如何生活中正確處理燙傷

    生活中經常會不小心被開水或者油之類的東西燙傷,不嚴重但需要迅速止痛,很多情況下手邊又沒有治療燙傷的藥膏.今天我們就來學習怎樣這樣的處理小燙傷. 方法/步驟 先用涼水把傷處沖洗乾淨, 然後把傷處放入涼水 ...