【C語言小知識】getchar與putchar

getchar與putchar

  • getchar介紹
  • putchar介紹
  • 總結

在學習c語言階段存在著許多要求輸入數值的例子,在輸入字符時,如果使用scanf()和printf()根據%c轉換說明讀寫字符,接下來介紹一堆字符輸入/輸出函數:getchar()和putchar()。

getchar介紹

在這里插入圖片描述

  • int getchar ( void );
  • 從流中獲取字符
  • 返回標準輸入的下一個字符
  • 它等效于使用 stdin 作為參數調用 getc。

getchar()函數不帶有任何參數,它從輸入隊列中返回下一個字符。

 ch = getchar();

這條語句讀取下一個字符輸入,并把該字符的值賦給變量ch。

	scanf("%c", &ch);

該語句與上面的語句效果相同。

putchar介紹

在這里插入圖片描述

  • int putchar ( int character );
  • 將字符寫入stdout
  • 將一個字符寫入標準輸出
  • 它等效于使用 stdout 作為參數調用 putc

putchar()函數打印它的參數。

putchar(ch);

此語句把之前賦給ch的值作為字符打印出來。

printf("%c", ch);

該語句與上面的語句效果相同。

總結

  • 由于getchar()與putchar()倆個函數只處理字符,所有較scanf()與printf()函數更快,更加簡潔。
  • 同時getchar()與putchar()不需要轉換說明,因為它們只處理字符。
  • 這倆個函數通常定義在stdio.h頭文件中,它們通常是預處理宏,而不是真正的函數。
#include<stdio.h>int main()
{char ch;ch = getchar();while (ch != '\n'){if (ch == ' '){putchar(ch);}else{putchar(ch + 1);}ch = getchar();}return 0;
}

在這里插入圖片描述
觀察這段代碼,與scanf()進行比較,使用getchar()時每次迭代的末尾有一條“讀取語句”。可以將讀取和測試合并為一個表達式:

#include<stdio.h>int main()
{char ch;while ((ch = getchar()) != '\n'){if (ch == ' '){putchar(ch);}else{putchar(ch + 1);}}return 0;
}

這里可以很好的體現C特有的編程風格——把倆個行為合并成一個表達式。

以上執行的行為是賦值給ch和把ch的值與換行符作比較。
表達式ch=getchar()倆側的圓括號讓其稱為!=運算符的左值,讀取ch的值后,測試條件相當于是ch!=‘\n’。

【注意】ch=getchar()倆側的圓括號一定需要存在,因為!=運算符的優先級比=高。

 putchar(ch + 1);

此語句可以很好的演示字符實際上是作為整數存儲的,表達式ch+1中的ch被轉換成int類型,然后int類型的計算結果被傳遞給接受一個int類型參數的putchar().

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

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

相關文章

Andriod安裝termux并換源

問題匯總 Error: The repository ‘https://mirrors.tuna.tsinghua.edu.cn/termux/termux-package-24 stable Release’ does not have a Release file. 更換源&#xff08;這里使用的是清華大學源&#xff09; 打開文件 nano $PREFIX/etc/apt/sources.list手動修改 deb htt…

web學習筆記(七十八)

目錄 1.自定義子組件的配置 2. 自定義子組件生命周期函數 3.父子組件傳值 3.1 父傳子 3.2 子傳父 1.自定義子組件的配置 在components文件中可以創建子組件&#xff0c;首先需要創建一個文件夾&#xff0c;然后右擊文件夾選擇新建Component 選擇這個配置系統不會自動配置…

ssm“落雪”動漫網站-計算機畢業設計源碼81664

目 錄 摘要 1 緒論 1.1 研究背景 1.2 研究意義 1.3論文結構與章節安排 2系統分析 2.1 可行性分析 2.2 系統流程分析 2.2.1 數據新增流程 3.2.2 數據刪除流程 2.3 系統功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系統用例分析 2.5本章小結 3 系統總體設…

Golang | Leetcode Golang題解之第217題存在重復元素

題目&#xff1a; 題解&#xff1a; func containsDuplicate(nums []int) bool {set : map[int]struct{}{}for _, v : range nums {if _, has : set[v]; has {return true}set[v] struct{}{}}return false }

溫州網站建設方案及報價

隨著互聯網的發展&#xff0c;網站建設已經成為企業推廣和營銷的重要手段。溫州作為中國經濟發達地區之一&#xff0c;各行各業企業紛紛意識到網站建設的重要性&#xff0c;紛紛加大網站建設工作的投入。那么&#xff0c;溫州網站建設方案及報價是怎樣的呢&#xff1f;下面我們…

Python | Leetcode Python題解之第218題天際線問題

題目&#xff1a; 題解&#xff1a; class Solution:def getSkyline(self, buildings: List[List[int]]) -> List[List[int]]:buildings.sort(keylambda bu:(bu[0],-bu[2],bu[1]))buildings.append([inf,inf,inf])heap [[-inf,-inf,-inf]]ans []for l,r,h in buildings:i…

開發必備基礎知識【字符編碼合集】

開發必備基礎知識【字符編碼合集】 大家在日常開發交流中會發現&#xff0c;別人那里運行的好好的文件&#xff0c;在你電腦上卻無法編譯&#xff0c;甚至出現一堆莫名其妙的字符&#xff0c;比如&#xff1a;&#xfffd;&#xfffd;&#xfffd; 程序中經常遇到一些關于亂碼…

探索人工智能在電子商務平臺與游戲發行商競爭中幾種應用方式

過去 12 年來&#xff0c;電腦和視頻游戲的發行策略發生了巨大變化。數字游戲的銷量首次超過實體游戲的銷量 在20132020 年的封鎖進一步加速了這一趨勢。例如&#xff0c;在意大利&#xff0c;封鎖的第一周導致數字游戲下載量 暴漲174.9%. 展望未來&#xff0c;市場有望繼續增…

著急,為啥AI叫好不叫座啊?

關注盧松松&#xff0c;會經常給你分享一些我的經驗和觀點。 李彥宏在2024世界人工智能大會上說&#xff1a; 沒有應用&#xff0c;光有基礎模型&#xff0c;不管是開源還是閉源都一文不值&#xff0c;所以我從去年下半年開始講&#xff0c;大家不要卷模型了&#xff0c;要去…

【AI應用探討】—多層感知機應用場景

目錄 一、計算機視覺 二、自然語言處理 三、推薦系統 四、金融風控 五、醫療健康 六、工業制造 七、其他領域 一、計算機視覺 在計算機視覺領域&#xff0c;多層感知機&#xff08;MLP&#xff09;因其強大的非線性建模能力而被廣泛應用于各種圖像處理任務中。具體應用…

SessionStorage和loacalStorage區別

一、SessionStorage 1.生命周期 SessionStorage中存儲的數據在當前會話期間有效&#xff0c;即當頁面關閉時數據將被清除。 2.作用域 SessionStorage中的數據僅在當前標簽頁或窗口中有效&#xff0c;不同標簽頁或窗口之間無法共享數據。 3.存儲容量 SessionStorage的存儲…

java面試-java基礎(上)

文章目錄 一、什么是Java&#xff1f;特點&#xff1f;二、什么是JVM、JDK、JRE&#xff1f;三、java跨平臺實現原理四、java數據類型有哪些?五、char能不能存一個中文漢字?六、存在數字i加1小于i或者i減1小于i?七、什么是自動類型轉換與強制類型轉換?八、什么是裝/拆箱&am…

數學不好能搞人工智能嗎?

很遺憾&#xff0c;不能。 人工智能&#xff08;AI&#xff09;實際上是一個將數學、算法理論和工程實踐緊密結合的領域。AI 扒開來看就是算法&#xff0c;也就是數學、概率論、統計學、各種數學理論的體現。 新的時代&#xff0c;程序員想要跨入 AI 之門&#xff0c;只要稍微…

13 - Python網絡編程入門

網絡編程入門 計算機網絡基礎 計算機網絡是獨立自主的計算機互聯而成的系統的總稱&#xff0c;組建計算機網絡最主要的目的是實現多臺計算機之間的通信和資源共享。今天計算機網絡中的設備和計算機網絡的用戶已經多得不可計數&#xff0c;而計算機網絡也可以稱得上是一個“復…

Springweb詳解

Springweb詳解 一.springweb介紹 1.1 SpringWEB 特點 ? SpringWEB 是 spring 家族原生產品&#xff0c;與 IOC 容器等基礎設施無縫對接. ? 基于原生的 Servlet&#xff0c;提供了一個前端控制器 DispatcherServlet &#xff0c;開發者 無須額外開發控制器對象. ? 可以自…

【SQL】聚簇索引與?聚簇索引的區別

聚簇索引&#xff08;Clustered Index&#xff09;和非聚簇索引&#xff08;Non-Clustered Index&#xff09;是數據庫索引的兩種主要類型&#xff0c;它們在數據存儲和訪問方式上有顯著區別。 聚簇索引 數據存儲順序&#xff1a;聚簇索引將數據行按照索引鍵的順序進行存儲。…

VSCode打開其它IDE項目注釋顯示亂碼的解決方法

問題描述&#xff1a;VSCode打開Visual Studio&#xff08;或其它IDE&#xff09;工程&#xff0c;注釋亂碼&#xff0c;如下圖所示&#xff1a; 解決方法&#xff1a;點擊VSCode右下角的UTF-8&#xff0c;根據提示點擊“通過編碼重新打開”&#xff0c;再選擇GB2312&#xff0…

R語言數據分析案例42-基于時間序列模型對股票預測分析和研究

一、研究背景和意義 隨著全球經濟的不斷發展和數字化轉型的加速推進&#xff0c;科技公司在全球市場中扮演著日益重要的角色。其中&#xff0c;中國的阿里巴巴集團作為全球最大的電子商務公司之一&#xff0c;其業務范圍覆蓋電子商務、云計算、金融科技等多個領域。由于其在中…

AI革命:RAG技術引領未來智能

AI革命:RAG技術引領未來智能 在人工智能的浪潮中,一種名為RAG(Retrieval-Augmented Generation)的技術正在悄然改變我們的世界。這種技術通過整合外部知識庫,極大地增強了大型語言模型(LLM)的性能,為智能助手、聊天機器人等應用帶來了革命性的提升。 1 突破性的RAG技…

【問題記錄】Jenkins Pipeline讀取變量的各種方法

方法一 輸出docker image鏡像標簽給IMAGE_TAG def IMAGE_TAG sh(script: docker images | grep ${SERVER_NAME} | grep $NAME_SPACE | awk {print $2}|grep ${BUILD_NUMBER}, returnStdout: true) 另外&#xff0c;如果想輸出docker image命令執行結果給IMAGE_TAG def IMAG…