【C語言】gets和getchar的區別

在C語言中,gets和getchar是兩個用于輸入的標準函數,它們在功能和用法上有所不同。

功能上:
gets函數主要用于讀取一行字符串,直到遇到換行符(回車鍵)為止。它會自動過濾掉換行符,不會將其讀入到結果字符串中。gets的使用格式為gets(s),其中s是一個字符串變量,可以是字符數組名或字符串指針。gets函數能夠接收整個輸入行,包括空格,直到用戶按下回車鍵

char str[100];
gets(str); // 讀取一行字符串,直到回車鍵

getchar函數則用于讀取單個字符。每次調用getchar時,它會從輸入流中讀取下一個字符,并返回。**這意味著getchar可以讀取包括換行符在內的任何字符。**如果在讀取字符之前,輸入流中有殘留的換行符或其他字符,getchar會直接讀取這些殘留字符,而不會等待新的鍵盤輸入。

char ch;
ch = getchar(); // 讀取一個字符

用法上:
主要區別在于gets用于字符串輸入,而getchar用于單個字符輸入。此外,gets在讀取時會忽略換行符,而getchar會將換行符作為有效字符讀取。

在實際使用中,gets由于不檢查目標數組的大小,可能會導致緩沖區溢出,因此在安全性要求較高的場合不推薦使用。而getchar雖然安全性較高,但由于只能讀取單個字符,使用起來可能不如gets方便。

示例:

#include <stdio.h>
int main() 
{char str[100];char ch;	// 使用gets讀取一行字符串gets(str);printf("輸入的字符串是:%s\n", str);	// 使用getchar讀取一個字符ch = getchar();printf("輸入的字符是:%c\n", ch);	return 0;
}

在上述代碼中,gets會讀取用戶輸入的整行字符串,直到按下回車鍵。而getchar則會讀取下一個字符,包括可能的換行符。如果在getchar之前用戶已經按下了回車鍵,getchar會讀取這個換行符,而不會等待用戶輸入新的字符。

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

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

相關文章

【數據結構與算法】數據結構初階:詳解二叉樹(一)

&#x1f525;個人主頁&#xff1a;胡蘿卜3.0 &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》《數據結構》 《C干貨分享》 ??人生格言&#xff1a;不試試怎么知道自己行不行 正片開始之前&#xff0c;我們來了解一下我們即…

工具測試 - marker (Convert PDF to markdown + JSON quickly with high accuracy)

參考鏈接如下&#xff1a;&#xff1a; 參考鏈接&#xff1a;https://github.com/datalab-to/marker?tabreadme-ov-file#llm-services 底層的OCR模型&#xff1a;https://github.com/datalab-to/surya 作用&#xff1a;開源免費&#x1f193;&#xff0c;多 GPU 推理、生成效…

STM32HAL 快速入門(七):GPIO 輸入之光敏傳感器控制蜂鳴器

STM32HAL 快速入門&#xff08;七&#xff09;&#xff1a;GPIO 輸入之光敏傳感器控制蜂鳴器 前言 大家好&#xff0c;這里是 Hello_Embed。上一篇我們用 GPIO 輸入模式實現了按鍵控制 LED&#xff0c;本篇將進階到 “光敏傳感器控制蜂鳴器”—— 通過讀取光敏傳感器的信號&…

windows環境,安裝kafka

步驟 1: 準備工作 確保已安裝 Java&#xff1a;Kafka 需要 Java 運行時環境 (JRE) 或 Java 開發工具包 (JDK) 來運行。請確認您的系統上已安裝了 Java&#xff0c;并且 JAVA_HOME 環境變量正確配置。 解壓 Kafka&#xff1a;將下載的 Kafka 壓縮包解壓到一個目錄&#xff0c;比…

機器翻譯60天修煉專欄介紹和目錄

文章目錄 第一章:機器翻譯基礎認知與語言學鋪墊 第二章:經典機器翻譯模型(統計機器翻譯) 第三章:神經網絡基礎與詞向量技術 第四章:神經機器翻譯(NMT)基礎架構 第五章:NMT模型進階與訓練實踐 第六章:預訓練模型與機器翻譯應用 第七章:研究前沿與綜合項目 導論:學習…

openwrt增加自定義網頁

一. 簡介 本文介紹在OpenWRT中使用Luci框架定制設備配置頁面的方法,包括添加靜態頁面和參數配置頁面的過程,以及如何利用lua腳本實現界面與功能的結合。 二. Luci介紹 UCI 是 Openwrt 中為實現所有系統配置的一個統一接口,英文名 Unified Configuration Interface,即統一…

微服務的編程測評系統11-jmeter-redis-競賽列表

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄前言1. 退出登錄1.1 后端1.2 前端2. 獲取當前用戶信息3. C端用戶競賽列表功能3.1 后端3.2 Jmeter-基本操作3.3 數據版本性能測試-壓力測試3.4 redis版本-緩存結構設計…

海濱浴場應急廣播:守護碧海藍天的安全防線

海濱浴場應急廣播&#xff1a;守護碧海藍天的安全防線&#xff01;海濱浴場&#xff0c;是人們休閑娛樂、親近自然的理想場所。然而&#xff0c;變幻莫測的海洋環境也潛藏著諸多安全隱患&#xff0c;如溺水、離岸流、海蜇蜇傷、極端天氣等。為了有效應對突發事件&#xff0c;保…

華曦達港股IPO觀察丨以創新研發為筆,構建AI Home智慧生活新藍圖

深圳市華曦達科技股份有限公司自創立伊始&#xff0c;便將敏銳的市場洞察與前沿技術追蹤視為生命線。通過構建一支卓越的研發團隊&#xff0c;公司專注于自主核心技術的深耕與積累&#xff0c;以精密的硬件與創新的軟件筑起堅實的技術壁壘。其精心打造的“技術創新&#xff0d;…

構建現代化的Web UI自動化測試框架:從圖片上傳測試實踐說起

構建現代化的Web UI自動化測試框架&#xff1a;從圖片上傳測試實踐說起如何設計一個可維護、可擴展的Web UI自動化測試框架&#xff1f;本文通過一個圖片上傳測試實例&#xff0c;詳細介紹專業測試框架的搭建與實踐。當前測試框架結構 首先&#xff0c;讓我們了解一下當前的測試…

Apache IoTDB:大數據時代時序數據庫選型的技術突圍與實踐指南

摘要&#xff1a;時序數據庫在大數據時代迎來爆發式增長&#xff0c;IoTDB作為Apache頂級開源項目展現出顯著優勢&#xff1a;1. 性能卓越&#xff1a;支持千萬級數據點/秒寫入&#xff0c;18:1高壓縮比&#xff0c;查詢延遲低至500ms&#xff1b;2. 創新架構&#xff1a;采用樹…

2025年8月16日(星期六):雨騎古蓮村游記

清晨&#xff0c;當第一縷微光還未完全驅散夜幕的靜謐&#xff0c;我們這群由校長領銜的騎行愛好者已整裝待發。咖啡節早市尚未開攤&#xff0c;空氣中彌漫著一種期待與寧靜交織的氛圍&#xff0c;仿佛連時間都在為我們即將開啟的旅程而放慢腳步。今天的目標是古蓮村&#xff0…

Pandas數據預處理中缺失值處理

一、缺失值的概念表現形式1.數據庫中常用null表示2.部分編程語言中用NA表示3.可能表現為空字符串&#xff08;‘’&#xff09;或特定數值4.在Pandas中統一用NaN表示&#xff08;來自NumPy庫&#xff0c;NaN、NAN、nan本質一致&#xff09;NaN的特性1.與任何值都不相等&#xf…

計算機網絡:(十五)TCP擁塞控制與擁塞控制算法深度剖析

> 當網絡變成"堵城",TCP如何化身智能交通指揮家?揭秘百萬級并發背后的流量控制藝術! ### 一、生死攸關:為什么需要擁塞控制? **真實災難案例**:1986年勞倫斯伯克利實驗室網絡大崩潰,因缺乏擁塞控制導致全網癱瘓36小時。TCP擁塞控制由此誕生,核心解決**資…

python中的單下劃線“_”與雙下劃線“__”的使用場景及“左右雙下劃線”(魔術方法:`__xxx__`)

在Python中&#xff0c;單下劃線“_”和雙下劃線“__”的使用場景和含義有顯著區別&#xff0c;主要體現在命名約定和語法 一、單下劃線“_”的使用場景 單下劃線更多是編程約定&#xff08;而非強制語法&#xff09;&#xff0c;用于傳遞特定的“暗示”&#xff0c;不影響代碼…

我們為什么需要時序數據庫?

引言在當今數據驅動的世界中&#xff0c;時間序列數據正以前所未有的速度增長。從物聯網設備傳感器、金融交易記錄到應用程序性能監控&#xff0c;時間序列數據無處不在。傳統的關系型數據庫在處理這類數據時往往力不從心&#xff0c;這時時序數據庫(Time Series Database, TSD…

python-林粒粒的視頻筆記1

python的方法和函數指什么 可變類型和不可變類型 不可變類型&#xff0c;比如字符串通過方法調用后&#xff0c;字符串本身的值不改變 要改變需要重新賦值才能進行改變 比如可變數據類型類型&#xff0c;調用方法后可以直接改變原列表 因此&#xff0c;可變數據類型需要再重新賦…

CentOS 7的下載與安裝

一 、CentOS 7的下載與安裝 注意&#xff1a; CentOS 7 已于2024年6月30日停止維護&#xff01; 1、下載 由于 centos 7 已經停止維護&#xff0c;部分鏡像網站移除了對centos 7的支持&#xff0c;這里找到了部分現在還可以使用的鏡像網站 阿里云開源鏡像站&#xff1a;http…

礦物分類系統開發筆記(二):模型訓練[刪除空缺行]

目錄 一、階段銜接與開發目標 二、數據準備 三、模型選擇與訓練 1. 邏輯回歸&#xff08;LR&#xff09; 2. 隨機森林&#xff08;RF&#xff09; 3. 高斯樸素貝葉斯&#xff08;GNB&#xff09; 4. 支持向量機&#xff08;SVM&#xff09; 5. AdaBoost 6. XGBoost 四…

通信方式:命名管道

一、命名管道 1. 命名管道的原理 有了匿名管道&#xff0c;理解命名管道就非常簡單了。 對于普通文件而言&#xff0c;兩個進程打開同一個文件&#xff0c;OS是不會將文件加載兩次的&#xff0c;這兩個進程都會指向同一個文件&#xff0c;那么&#xff0c;也就享有同一份 in…