chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

剖析C語言中scanf函數(shù)常見問題

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2021-09-24 16:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在寫C代碼時(shí)難免對(duì)一些知識(shí)點(diǎn)不熟悉,導(dǎo)致犯錯(cuò),今天分享幾點(diǎn)小知識(shí)給大家。

空白符問題

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

結(jié)果要輸入兩個(gè)數(shù)程序才結(jié)束,而不是預(yù)期的一個(gè)。why?

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

回車符也占位

#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

那么循環(huán)就會(huì)“提前”結(jié)束了。

原因

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

解決方法

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

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

在某度見到的問題:

#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;}

當(dāng)輸入a 回車 后,會(huì)直接跳過下面2個(gè)scanf語句,直接輸出為:

123t

原因

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

解決方法

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

比如:

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

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

編輯:jq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7642

    瀏覽量

    144625
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4406

    瀏覽量

    66843
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4941

    瀏覽量

    73151
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    688

    瀏覽量

    34950

原文標(biāo)題:C語言中scanf函數(shù)的常見問題

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    scanf函數(shù)介紹

    scanf函數(shù)向字符型數(shù)組輸入數(shù)據(jù)char a[20]; scanf(\"%s\", a); 錯(cuò)誤 scanf(%s\",a); 正確 用s
    發(fā)表于 12-02 06:07

    C語言的分支結(jié)構(gòu)介紹

    1.簡單if語句 C語言中的分支結(jié)構(gòu)語句中的if條件語句。 簡單if語句的基本結(jié)構(gòu)如下: 代碼語言:javascript if(表達(dá)式) { 執(zhí)行代碼塊; } 其語義是:如果表達(dá)式的值為真,則執(zhí)行其后的語句,否則不執(zhí)
    發(fā)表于 11-25 07:48

    C語言常見算法

    # C語言常見算法 C語言中常用的算法可以分為以下幾大類: ## 1. 排序算法 ### 冒泡排序 (Bubble Sort) ```
    發(fā)表于 11-24 08:29

    C語言宏拼接運(yùn)算符典型使用

    C語言中,##運(yùn)算符(稱為[size=16.002px]標(biāo)記拼接運(yùn)算符)用于宏定義中將兩個(gè)標(biāo)記(token)拼接成一個(gè)新的標(biāo)記。它在預(yù)處理階段處理,常用于動(dòng)態(tài)生成變量名、函數(shù)名或類型名,以提高代碼
    發(fā)表于 11-20 08:27

    Arty移植蜂鳥E203后,發(fā)現(xiàn)不支持scanf函數(shù),怎么解決?

    本人想用Arty A7 35T做一些基于蜂鳥E203的串口交互開發(fā),目前已經(jīng)移植并且成功運(yùn)行了printf函數(shù)。 在測試scanf函數(shù)的時(shí)候,發(fā)現(xiàn)結(jié)果不理想(好吧其實(shí)就沒反應(yīng)),于是讀源碼,看到了下面這句話 請(qǐng)問是不是沒救了?
    發(fā)表于 11-07 07:13

    ZYNQ UltraScalePlus RFSOC QSPI Flash固化常見問題說明

    璞致 ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常見問題說明
    發(fā)表于 08-08 15:49 ?0次下載

    C語言中的內(nèi)聯(lián)函數(shù)與宏

    C編程中,內(nèi)聯(lián)函數(shù)和宏都用于避免函數(shù)調(diào)用的開銷并編寫可復(fù)用的邏輯部分,但它們?cè)诠ぷ鞣绞胶桶踩苑矫娲嬖陲@著差異。
    的頭像 發(fā)表于 07-25 15:10 ?1719次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的內(nèi)聯(lián)<b class='flag-5'>函數(shù)</b>與宏

    PCBA代工避坑指南:常見問題+解決方案全解析

    一站式PCBA加工廠家今天為大家講講PCBA代工代購元器件常見問題有哪些?PCBA代工代購元器件常見問題及解決方案。隨著科技的不斷發(fā)展和市場需求的變化,越來越多的企業(yè)選擇通過外包方式進(jìn)行PCBA生產(chǎn)
    的頭像 發(fā)表于 07-09 09:38 ?471次閱讀

    Windows環(huán)境下32位匯編語言中文資料

    電子發(fā)燒友網(wǎng)站提供《Windows環(huán)境下32位匯編語言中文資料.rar》資料免費(fèi)下載
    發(fā)表于 06-30 15:14 ?0次下載

    深入理解C語言C語言循環(huán)控制

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

    deepin 25系統(tǒng)安裝常見問題

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

    電機(jī)故障診斷常見誤區(qū)的剖析

    純分享帖,需要者可點(diǎn)擊附件獲取完整資料~~~*附件:電機(jī)故障診斷常見誤區(qū)的剖析.pdf (免責(zé)聲明:本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)第一時(shí)間告知,刪除內(nèi)容?。?
    發(fā)表于 04-07 17:35

    EE-62:在C語言中訪問短字內(nèi)存

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

    EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)

    電子發(fā)燒友網(wǎng)站提供《EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù).pdf》資料免費(fèi)下載
    發(fā)表于 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>調(diào)用匯編類成員<b class='flag-5'>函數(shù)</b>

    電子設(shè)備EMC測試整改:常見問題與解決方案

    深圳南柯電子|電子設(shè)備EMC測試整改:常見問題與解決方案
    的頭像 發(fā)表于 12-23 11:47 ?1858次閱讀
    電子設(shè)備EMC測試整改:<b class='flag-5'>常見問題</b>與解決方案