C 語言字符輸入:掌握 getchar 和 scanf 的用法與陷阱

各類資料學習下載合集

??https://pan.quark.cn/s/8c91ccb5a474??

C 語言字符輸入:掌握 getchar 和 scanf 的用法與陷阱

你好!在 C 語言編程中,與用戶進行交互最基本的方式就是通過標準輸入和標準輸出。我們之前探討了如何使用 ??printf?? 和 ??putchar?? 進行輸出,那么如何從鍵盤接收用戶的輸入呢?

C 語言標準庫提供了多種輸入函數,其中最常用、也是處理字符輸入的基礎函數是 ??getchar?? 和 ??scanf??。雖然它們都能用于接收字符,但用法和適用場景有所不同。理解它們的特性,特別是 ??scanf?? 在處理字符輸入時可能遇到的“陷阱”,對于編寫健壯的 C 程序至關重要。

今天,我們就來深入學習這兩個函數,并通過詳細的代碼示例來掌握它們的用法。


1. 輸入函數概述:??getchar?? vs. ??scanf??

C 語言中用于從標準輸入讀取數據的函數有很多,但就字符輸入而言,我們主要關注:

  • ??getchar()??: 一個簡單直接的函數,用于讀取單個字符
  • ??scanf()??: 一個功能強大的格式化輸入函數,可以讀取多種類型的數據,包括字符。

讓我們分別來看它們的詳細用法。


2. ??getchar()??:簡單直接的單字符讀取器

2.1 作用與用法

??getchar()?? 函數用于從標準輸入(通常是鍵盤)讀取一個字符。它不需要任何參數,并且會返回讀取到的字符(以 ??int?? 類型返回,以便能表示特殊的 ??EOF?? 文件結束標志)。

要使用 ??getchar()?? 讀取的字符,你需要將其返回值賦值給一個變量來存儲。

2.2 代碼示例:使用 ??getchar?? 讀取單個字符

#include <stdio.h> // 引入標準輸入輸出庫int main() {printf("請輸入一個字符并按回車:");// 調用 getchar() 讀取一個字符,并將其賦值給 my_char 變量int my_char_int = getchar(); // getchar() 返回 int 類型// 將讀取到的 int 強制轉換為 char 類型以便打印char my_char = (char)my_char_int;printf("你輸入的字符是: %c\n", my_char);printf("該字符的 ASCII 值為: %d\n", my_char_int); // 打印原始 int 值return 0; // 程序成功結束
}

2.3 編譯與運行結果

將上面的代碼保存為 ??getchar_example.c?? 文件,然后編譯運行:

gcc getchar_example.c -o getchar_example
./getchar_example

運行示例 1:

請輸入一個字符并按回車:A  <-- 用戶輸入 A,然后按回車
你輸入的字符是: A
該字符的 ASCII 值為: 65

運行示例 2&

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

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

相關文章

【React】 Hooks useTransition 解析與性能優化實踐

1.背景 useTransition 是 React 18 引入的一個并發模式下的 Hook&#xff0c;用于區分緊急和非緊急的狀態更新&#xff0c;提升應用的響應性和用戶體驗;它可以管理 UI 中的過渡狀態&#xff0c;特別是在處理長時間運行的狀態更新時。它允許你將某些更新標記為“過渡”狀態&…

蘑菇管理——AI與思維模型【94】

一、定義 蘑菇管理思維模型是一種形象地描述組織對待新員工或初入職場者的管理方式及相關現象的思維模型。它將新員工或初入職場者比作蘑菇&#xff0c;這些人在初期往往被置于陰暗的角落&#xff08;不受重視的部門&#xff0c;或打雜跑腿的工作&#xff09;&#xff0c;澆上…

c++STL——set和map的使用

文章目錄 set和map的使用set系列聲名和定義默認成員函數迭代器set的增刪查lower_bound和upper_boundInsert接口pair類 對于查找的另一種使用 set和multiset的區別 map系列聲名和定義pair類的進一步介紹默認成員函數map的增刪查map的數據修改map和multimap的差異 set和map的使用…

什么是DGI數據治理框架?

DGI數據治理框架是由數據治理研究所&#xff08;Data Governance Institute, DGI&#xff09;提出的一套系統性方法論&#xff0c;旨在幫助企業或組織建立有效的數據治理體系&#xff0c;確保數據資產的高質量管理、合規使用和價值釋放。以下是關于DGI數據治理框架的核心內容&a…

chrome 瀏覽器怎么不自動提示是否翻譯網站

每次訪問外國語網頁都會彈出這個對話框&#xff0c;很是麻煩&#xff0c;每次都得手動關閉一下。 不讓他彈出來方法&#xff1a; 設置》語言》首選語言》添加語言&#xff0c;搜索英語添加上 如果需要使用翻譯&#xff0c;就點擊三個點&#xff0c;然后選擇翻譯

LeetCode 熱題 100 54. 螺旋矩陣

LeetCode 熱題 100 | 54. 螺旋矩陣 大家好&#xff0c;今天我們來解決一道經典的算法題——螺旋矩陣。這道題在LeetCode上被標記為中等難度&#xff0c;要求我們按照順時針螺旋順序返回矩陣中的所有元素。下面我將詳細講解解題思路&#xff0c;并附上Python代碼實現。 問題描述…

生成式AI將重塑的未來工作

在人類文明的長河中,技術革命始終是推動社會進步的核心動力。從蒸汽機的轟鳴到互聯網的浪潮,每一次技術躍遷都在重塑著人類的工作方式與生存形態。而今,生成式人工智能(Generative AI)的崛起,正以超越以往任何時代的速度與深度,叩響未來工作范式變革的大門。這場變革并非…

【2025軟考高級架構師】——2024年05月份真題與解析

摘要 本文內容是關于2025年軟考高級架構師考試的相關資料&#xff0c;包含2024年05月份真題與解析。其中涉及體系結構演化的步驟、OSI協議中能提供安全服務的層次、數據庫設計階段中進行關系反規范化的環節等知識點&#xff0c;還提及了軟考高級架構師考試的多個模塊&#xff…

KAG:通過知識增強生成提升專業領域的大型語言模型(三)

目錄 摘要 Abstract 1 Schema 2 Prompt 3 KAG-Builder 3.1 reader 3.2 splitter 3.3 extractor 3.4 vectorizer 3.5 writer 3.6 可選組件 4 示例 總結 摘要 本周深入學習了 KAG 項目中的 Schema、Prompt 以及 KAG-Builder 相關代碼知識&#xff0c;涵蓋了其定義、…

Gitea windows服務注冊,服務啟動、停止、重啟腳本

修改配置文件 查看COMPUTERNAME echo %COMPUTERNAME%進入配置文件D:\gitea\custom\conf\app.ini&#xff0c;將 Gitea 設置為以本地系統用戶運行 如果結果是 USER-PC&#xff0c;那么 RUN_USER USER-PC$ RUN_USER COMPUTERNAME$SQLite3 PATH配置&#xff0c;更改為包含完整…

礦泉水瓶的繪制

1.制作中心矩形&#xff0c;大小為60&#xff0c;注意設置矩形的兩條邊相等 2.點擊拉伸&#xff0c;高度為150mm 3.使用圓角命令&#xff0c;點擊連接到開始面&#xff0c;同時選中4條邊&#xff0c;進行圓角轉化&#xff0c;圓角大小為10mm&#xff0c;點擊多半徑圓角&#xf…

【程序+論文】大規模新能源并網下的火電機組深度調峰經濟調度

目錄 1 主要內容 講解重點 2 講解視頻及代碼 1 主要內容 該視頻為《大規模新能源并網下的火電機組深度調峰經濟調度》代碼講解內容&#xff0c;該程序有完全對照的論文&#xff0c;以改進IEEE30節點作為研究對象&#xff0c;系統包括5個火電機組和2個新能源機組&#xff0c;…

??工業機器人智能編程:從示教器到AI自主決策??

工業機器人智能編程:從示教器到AI自主決策 引言 工業機器人作為智能制造的核心裝備,其編程方式正經歷革命性變革。傳統示教器編程效率低下,平均每個路徑點需要30秒人工示教,而復雜軌跡編程可能耗時數周。隨著AI技術的發展,工業機器人編程正朝著"所見即所得"的…

n8n 構建一個 ReAct AI Agent 示例

n8n 構建一個 ReAct AI Agent 示例 0. 引言1. 詳細步驟創建一個 "When Executed by Another Workflow"創建一個 "Edit Fields (Set)"再創建一個 "Edit Fields (Set)"創建一個 HTTP Request創建一個 If 節點在 true 分支創建一個 "Edit Fiel…

Monorepo項目多項目一次性啟動工具對比與實踐

Monorepo項目多項目一次性啟動工具對比與實踐 在現代軟件開發中&#xff0c;Monorepo&#xff08;單一倉庫&#xff09;模式越來越受到開發者的青睞。Monorepo將多個相關的項目或包集中在一個倉庫中進行管理&#xff0c;方便依賴共享、代碼復用和統一發布。在Monorepo項目開發…

筆記整理六----OSPF協議

OSPF 動態路由的分類&#xff1a; 1.基于網絡范圍進行劃分--將網絡本身劃分為一個個AS&#xff08;自治系統---方便管理和維護&#xff09; 內部網關協議---負責AS內部用戶之間互相訪問使用的協議 IGP--RIP EIGRP ISIS OSPF 外部網關協議--負責AS之間&#xff08;整個互聯網&…

網絡編程,使用select()進行簡單服務端與客戶端通信

這里在Ubuntu環境下演示 一般流程 服務端常用函數&#xff1a; socket()&#xff1a;創建一個新的套接字。bind()&#xff1a;將套接字與特定的IP地址和端口綁定。listen()&#xff1a;使套接字開始監聽傳入的連接請求。accept()&#xff1a;接受一個傳入的連接請求&#xff…

智能決策支持系統的基本概念與理論體系

決策支持系統是管理科學的一個分支&#xff0c;原本與人工智能屬于不同的學科范疇&#xff0c;但自20世紀80年代以來&#xff0c;由于專家系統在許多方面取得了成功&#xff0c;于是人們開始考慮把人工智能技術用于計算機管理中來。在用計算機所進行的各種管理中&#xff0c;如…

驅動開發系列55 - Linux Graphics QXL顯卡驅動代碼分析(二)顯存管理

一:概述 前面介紹了當內核檢測到匹配的PCI設備后,會調用 qxl_pci_probe 初始化設備,其中會調用qxl_device_init 來初始化設備,為QXL設備進行內存映射,資源分配,環形緩沖區初始化,IRQ注冊等操作,本文展開說說這些細節,以及介紹下QXL的顯存管理。 二:QXL設備初始化細節…

洛谷 P1495:【模板】中國剩余定理(CRT)/ 曹沖養豬

【題目來源】 https://www.luogu.com.cn/problem/P1495 https://www.acwing.com/problem/content/225/ 【題目描述】 自從曹沖搞定了大象以后&#xff0c;曹操就開始捉摸讓兒子干些事業&#xff0c;于是派他到中原養豬場養豬。可是曹沖滿不高興&#xff0c;于是在工作中馬馬虎…