scanf的返回值

總所周知,scanf是C提供的庫函數的內容,而絕大多數定義的函數都會有一個返回值。

那么scanf的返回值是什么呢?

查了CPP的解釋后,返回值就是返回的是scanf讀取的數據的個數。

這個概念可能比較抽象。先看如下示例:


我們來看第1個例子:

int main()
{int a = 0;int b = 0;int n = scanf("%d %d", &a, &b);printf("%d\n", n);
}

輸出結果為: 2


第2個例子:?

int main()
{char a = 0;char b = 0;int n = scanf("%c", &a);printf("%d\n", n);
}

輸出結果為 :1

如上可見,

當scanf中要讀取1個數據時(任何類型),scanf的返回值為1;

當scanf中要讀取2個數據時(任何類型),scanf的返回值為2;

當讀取類型和輸入類型沖突時,(即輸入的格式為%d,鍵盤卻輸入了一個字符a,),此時scanf不能讀取任何值,返回值為0;


那么這個有啥用呢?

不著急,我們先來看下面這個題目

  • 輸入一個整數表示一個人的智商,如果大于等于140,則表明他是一個天才,輸出“Genius”。

    輸入描述:

    多組輸入,每行輸入包括一個整數表示的智商。

    輸出描述:

    針對每行輸入,輸出“Genius”。


咋一看好像沒什么問題,但你細品————“多組輸入” !

說明輸入一個數據按回車后,程序不能退出,要進行下一次循環;

問題來了,如何實現?????????????????????????寫無數個if函數一直判斷?(代碼長? 且? 中間不能退出)

這時候只需要一個表達式

while (scanf("%d", &a)==1)?

int main()
{int a = 0;while (scanf("%d", &a)==1){if (a >= 140)printf("YES\n");elseprintf("NO\n");}return 0;}

返回值為1 ,則會進入while循環

返回值不為1,則會跳出while循環,結束函數。

那么如何令返回值不為1呢?

  1. 輸入一個數字以外的字符,如:a,b,;,+;
  2. 同時按下Ctrl和z;

我們對Ctrl+z作出解釋:

????????先介紹一個:EOF(end of file)(文件結束標志)。

printf("%d", EOF);輸出為-1

只需在鍵盤輸入時輸入Ctrl+z便可以引用EOF,直接使得scanf返回值為-1

注意此時就不是給a賦值了

int main()
{int a = 0;int b = 0;int n = scanf("%d %d", &a, &b);printf("%d\n", n);printf("%d", EOF);
}

輸出值:-1

? ? ? ? ? ? ? -1

但當我們用VS實踐時卻發現如下問題:

為什么要連續輸入三個Crtl+z?

這里目前可以理解為VS獨有,平時就記成輸入一個Crtl+z就能停止就行了


謝謝大家,求個贊!!

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164894.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT QJsonObject 插入 QByteArray十六進制數據

場景描述 有一組十六進制數使用QByteArray進行存儲;需要將其插入QJsonObject,然后通過網絡發送出去;接收到后,再轉換回QByteArray; 操作代碼 1. QByteArray轉換QString插入QJsonObject QString str ""; …

io500 壓測

目的 編譯環境 centos 7.9安裝包 yum groupinstall Development\ Tools yum install -y libevent-devel hwloc-devel libcephfs-devel.x86_64 編譯 open mpi 下載地址 https://www.open-mpi.org/software/ompi/v5.0/編譯 rpmbuild --rebuild openmpi-4.1.6-1.src.rpm安裝…

Leetcode 155. 最小棧

class MinStack {//用一個輔助棧存儲對應棧元素為棧頂時的最小值//當原棧插入一個元素時&#xff0c;輔助棧插入此值與當前輔助棧棧頂的值&#xff08;即插入前的最小值&#xff09;的較小值Stack<Integer> sta1;Stack<Integer> sta2;public MinStack() {sta1 new…

Redis(哨兵模式)

哨兵模式的定義&#xff1a; 是Redis的一種高可用解決方案&#xff0c;通過運行多個Redis實例來監控主從Redis實例的狀態&#xff0c;當主實例出現故障時&#xff0c;哨兵會自動選舉一個從實例作為新的主實例&#xff0c;從而保證系統的高可用性。哨兵模式可以監控多個主從Red…

2023亞太杯數學建模競賽C題詳細代碼解析建模

C題&#xff1a;The Development Trend of New Energy Electric Vehicles in China中國談新能源電動汽車的發展趨勢 第一問部分&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.prep…

Axios 通過a標簽下載文件 跨域下載

<!-- a標簽占位 --><a ref"down" ></a>getTest() {this.$axios.request({url: https://cnv13.55.la/download?file_key3695fa9461a0ae59cf3148581e4fe339&handle_typeexcel2pdf,method: get,responseType: blob, // 切記類型 blob}).then(re…

RC4密碼(python實現)

def RC4_INIT(key):keylist(key)for i in range(len(key)):key[i]ord(key[i]) #需要將key中的每個字符轉換為整數進行異或k[0 for i in range(256)]s[0 for i in range(256)]j0lengthlen(key)for i in range(256):s[i]ik[i]key[i%length] #如果key為123&#xff0c;則實際填充…

實現二叉搜索樹的查找、插入和刪除功能(思路+圖文+代碼詳解)

文章目錄 二叉搜索樹一、搜索樹1.二叉搜索樹的查找2.二叉搜索樹的插入3.二叉搜索樹的刪除4.性能分析 二叉搜索樹 HashMap和HashSet的底層是一個哈希表 TreeMap 和TreeSet底層是一棵搜索樹&#xff08;紅黑樹&#xff09; 涉及到一些搜索查找的場景可以調用Map和Set接口 一、…

Action!錄屏工具免費完整版,錄屏軟件,打開即可解鎖最新完整可用版本,支持GPU加速HDR視頻錄制和播放

一、軟件簡介 本次帶來的錄屏工具已升級為【完整版本】&#xff0c;所有功能全部可用。該錄屏工具支持GPU硬件加速&#xff0c;可以智能識別主流硬件設備&#xff0c;支持通過GPU進行HDR視頻錄制和播放進行。視頻錄制幀率最高支持360FPS&#xff0c;直播視頻幀率最高支持60FPS…

Java反射機制

我是南城余&#xff01;阿里云開發者平臺專家博士證書獲得者&#xff01; 歡迎關注我的博客&#xff01;一同成長&#xff01; 一名從事運維開發的worker&#xff0c;記錄分享學習。 專注于AI&#xff0c;運維開發&#xff0c;windows Linux 系統領域的分享&#xff01; 本…

RK3399平臺開發系列講解(內核入門篇)ConfigFS 的核心數據結構

??返回專欄總目錄 文章目錄 一、關鍵數據結構二、config_item 的結構體三、屬性和方法沉淀、分享、成長,讓自己和他人都能有所收獲!?? ??虛擬文件系統 ConfigFS 是一個特殊的文件系統,旨在提供一種動態配置 Linux 內核和設備的機制。 一、關鍵數據結構 ConfigFS 的核…

Vue表單的整體處理

在前端的處理中&#xff0c;表單的處理永遠是占高比例的。在BOMDOMjs的時候是這樣&#xff0c;在Vue的時候也是這樣。Vue的表單處理做了特別的優化&#xff0c;如值綁定、數據驗證、錯誤提示、修飾符等。 表單組件的示例&#xff1a; <script setup lang"ts">…

如何用Postman做接口自動化測試?一文5個步驟帶你成功實現!

什么是自動化測試 把人對軟件的測試行為轉化為由機器執行測試行為的一種實踐。 例如GUI自動化測試&#xff0c;模擬人去操作軟件界面&#xff0c;把人從簡單重復的勞動中解放出來 本質是用代碼去測試另一段代碼&#xff0c;屬于一種軟件開發工作&#xff0c;已經開發完成的用例…

解決kubernetes中微服務pod之間調用失敗報錯connection refused的問題

現象&#xff1a; 從這里可以看到是當前服務在調用product service服務是出現了連接拒絕connection refused 走讀一下原始代碼&#xff1a; 可以看到請求是由FeignClient代理發出的 &#xff0c;但問題在于為什么Feign請求的時候會產生connection refused錯誤&#xff1f; 上…

Programming Tensor Cores: NATIVE VOLTA TENSOR CORES WITH CUTLASS

PROGRAMMING TENSOR CORES: NATIVE VOLTA TENSOR CORES WITH CUTLASS 源自于 GTC Silicon Valley-2019: cuTENSOR: High-performance Tensor Operations in CUDA&#xff0c;介紹了 CUTLASS 1.3 中基于 Volta Tensor Core 實現高效矩陣乘法計算的策略。主要內容為以下三點&…

Python函數式編程:讓你的代碼更優雅更簡潔

概要 函數式編程&#xff08;Functional Programming&#xff09;是一種編程范式&#xff0c;它將計算視為函數的求值&#xff0c;并且避免使用可變狀態和循環。 函數式編程強調的是函數的計算&#xff0c;而不是它的副作用。 在函數式編程中&#xff0c;函數是第一類公民&a…

【Vue3】解決Vue打包后上傳服務器 資源路徑加載錯誤

問題&#xff1a; 我這里在打包Vue之后將打包后的dist 上傳至服務器站點根目錄內子目錄 名為 "adminstore" , 但是當我通過域名打開站點后發現 資源加載路徑內并沒有攜帶 子目錄 "adminstore" 文件名稱 錯誤&#xff1a;http://your website domain/js/app…

Java 開發常用的 Linux 命令匯總(建議收藏)

雖然平時大部分工作都是和Java相關的開發, 但是每天都會接觸Linux系統, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環境中. 自己記憶力不好, 很多有用的Linux命令不能很好的記憶, 現在逐漸總結一下, 以便后續查看. 基本操作 Linux關機,重啟 # 關機 shutdown -h n…

面試Java筆試題精選解答

文章目錄 熱身級別數組中重復的數字思路&#xff1a;使用map或HashSet來遍歷一遍就可以找出重復的字符樣例解答 用兩個棧實現隊列思路&#xff1a;Stack1正向進入&#xff0c;隊頭在棧底&#xff0c;用于進隊列操作&#xff1b;Stack2是Stack1倒棧形成&#xff0c;隊頭在棧頂&a…

學生成績管理系統(C++實現)

問題描述 實現學生成績管理系統&#xff1a; 學生信息包括&#xff1a;學號、姓名、性別、年齡、班級等信息。除了包括學生所有信息外&#xff0c;還包括專業、英語、程序設計和高等數學等課程。 設計一程序能夠對學生成績進行管理&#xff0c;應用到繼承、抽象類、虛函數、虛…