C/C++中對字符處理的常用函數

????????C語言中的 ctype.h 頭文件提供了一系列字符分類和轉換函數,用于高效處理字符相關操作。這些函數通過接受 int 類型參數(需為 unsigned char 或 EOF (-1)值),返回非零值表示條件正確,返回0表示錯誤。以下是常用函數的分類介紹:

?一、字符測試函數


1.? isalnum(int c)

????????判斷 字符 c 是否為字母或數字( a-z、A-Z、0-9 )

????????isalnum(int c)
? ?????????判斷 字符 c 是否為字母或數字( a-z、A-Z、0-9 )

????????????????是?則返回非0值,否?則返回0;

char a;
if(isalnum(a)) //判斷字符a是否為字母或數字( a-z、A-Z、0-9 )。
{printf("a是字母或數字");
}
else
{printf("a不是字母或數字");
}

? ? ? ??驗證用戶名是否合法時常用此函數。

2.? isalpha(int c)

判斷 字符 c 是否為字母( a-z、A-Z?)

????????isalpha(int c)

?????????判斷 字符 c 是否為字母( a-z、A-Z?)

????????????????是 則返回非0值,否 則返回0;

char a;
if(isalpha(a)) //判斷字符a是否為字母( a-z、A-Z )。
{printf("a是字母");
}
else
{printf("a不是字母");
}

常用于過濾非字母字符。

3. isdigit(int c)

????????判斷 字符 c 是否為數字( 0-9 )

?????????isdigit(int c)

????????判斷 字符 c 是否為數字( 0-9 )

????????????????是 則返回非0值,否 則返回0;

char a;
if(isdigit(a)) //判斷字符a是否為數字( 0 - 9 )。
{printf("a是數字");
}
else
{printf("a不是數字");
}

適合驗證輸入是否為純數字。

4.? isspace(int c)

????????判斷 字符 c 是否為空白字符( 空格`' '`、換行符`\n`、制表符`\t`等 )

????????isspace(int c)?

????????判斷 字符 c 是否為空白字符( 空格`' '`、換行符`\n`、制表符`\t`等 )

????????????????是 則返回非0值,否 則返回0;

char a;
if(isspace(a)) //判斷字符a是否為空白字符( 空格`' '`、換行符`\n`、制表符`\t`等 )。
{printf("a是空白字符");
}
else
{printf("a不是空白字符");
}

常用于解析文本格式。

5.? islower(int c) 和? isupper(int c)?

分別判斷`c`是否為小寫字母(`a-z`)或大寫字母(`A-Z`)

????????islower(int c) 和? isupper(int c)?

????????分別判斷`c`是否為小寫字母(`a-z`)或大寫字母(`A-Z`)

????????是 則返回非0值,否 則返回0;

char a;
if(islower(a)) //判斷字符a是否為小寫字母( a~z )
{printf("a是小寫字母");
}
else
{printf("a不是小寫字母");
}char a;
if(islower(a)) //判斷字符a是否為大寫字母( A ~ Z)
{printf("a是大寫字母");
}
else
{printf("a不是大寫字母");
}

可用于大小寫敏感的場景。

6.? isxdigit(int c)

???????判斷`c`是否為十六進制數字( 0-9 、 a-f 、 A-F )

????????isxdigit(int c)

????????判斷`c`是否為十六進制數字( 0-9 、 a-f 、 A-F )

????????是 則返回非0值,否 則返回0;

char a;
if(islower(a)) //判斷字符a是否為十六進制數字( 0-9 、 a-f 、 A-F )printf("a是十六進制數字");
}
else
{printf("a不是十六進制數字");
}

適用于解析十六進制字符串。?

7.? ispunct(int c)

? ? ? 判斷`c`是否?為標點符號(如`!`、`?`等)

????????ispunct(int c)

? ? ? ? 判斷`c`是否?為標點符號(如`!`、`?`等)

????????是 則返回非0值,否 則返回0;

char a;
if(islower(a)) //判斷字符a是否為標點符號(如`!`、`?`等)printf("a是標點符號");
}
else
{printf("a不是標點符號");
}


? ?用于過濾非字母數字符號。

8.? isprint(int c)和isgraph(int c)

? ? ? 判斷?c 是否?為可打印字符(包括空格),而 isgraph(int c) 則排除空格,用于控制輸出格式。

????????isprint( int c)和isgraph( int c )

? ? ? ? 判斷?c 是否?為可打印字符(包括空格),而 isgraph(int c) 則排除空格,用于控制輸出格式。

????????是 則返回非0值,否 則返回0;

char a;
if(isprint(a)) //判斷字符a是否為可打印字符(包括空格)printf("a是可打印字符(包括空格)");
}
else
{printf("a不是可打印字符(包括空格)");
}char a;
if(isgraph(a)) //判斷字符a是否為可打印字符(不包括空格)printf("a是可打印字符(不包括空格)");
}
else
{printf("a不是可打印字符(不包括空格)");
}

用于控制輸出格式。

?二、字符轉換函數


1.? tolower(int c)

?將大寫字母轉換為小寫字母,若`c`不是大寫字母則返回原值。


? ?將大寫字母轉換為小寫字母,若`c`不是大寫字母則返回原值。

char c = A;
char c = tolower(c); // 將 A 轉換成 a

統一用戶名格式時使用。

2. toupper(int c)

?將小寫字母轉換為大寫字母,若 'c' 非小寫字母時返回原值。


? ?將小寫字母轉換為大寫字母,若 'c' 非小寫字母時返回原值。

char c = a;
char c = toupper(c); // 將 a 轉換成 A

適用于生成統一格式的字符串。

?三、應用場景


- 輸入驗證:如使用 isdigit 確保用戶輸入的是數字,或 isalpha 限制只能輸入字母。
- 字符串處理:通過 tolower / toupper 統一字符串大小寫,或利用 isspace 分割單詞。
- 數據解析:例如用 isxdigit 解析十六進制顏色代碼,或 ispunct 過濾標點符號。

?四、注意事項


- 參數范圍:傳入的`int`值需在`0-255`或`EOF`范圍內,否則可能導致未定義行為。
- 本地化影響:
部分函數(如 isspace)的行為可能受本地化設置影響,需注意跨平臺兼容性。

通過合理使用這些函數,可以避免手動編寫字符判斷邏輯,提升代碼的可讀性和可維護性。

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

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

相關文章

雙指針算法介紹+算法練習(2025)

一、介紹雙指針算法 雙指針(或稱為雙索引)算法是一種高效的算法技巧,常用于處理數組或鏈表等線性數據結構。它通過使用兩個指針來遍歷數據,從而減少時間復雜度,避免使用嵌套循環。雙指針算法在解決諸如查找、排序、去重…

【每日八股】計算機網絡篇(四):HTTP

目錄 HTTP 與 HTTPS 的區別?HTTPS 加密與認證的過程?ClientHelloServerHello客戶端回應服務端回應 HTTPS 一定安全可靠嗎?HTTPS 狀態碼的含義?HTTP 緩存有哪些實現方式?HTTP 1.0、HTTP 1.1、HTTP 2.0 和 HTTP 3.0 的區…

TMS320F28P550SJ9學習筆記10:軟件模擬I2C通信_驅動1.3寸OLED

現在有了具體的I2C通信器件,一塊1.3寸OLED屏幕,今日嘗試移植配置一下: 本文主要講的是,使用軟件模擬I2C通信 文章提供測試代碼講解、完整工程下載、測試效果圖 目錄 前置文章: I2C通信引腳: 軟件I2C 引腳的初始化&am…

spring boot 發送郵件驗證碼

一、前置需求 1、準備郵箱 2、登錄授權碼 qq郵箱在–>設置–>賬號POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務 開啟服務 二、發送郵件 1、簡單郵件 包含郵件標題、郵件正文 2、引入mail啟動器 <dependency><groupId>org.springframework.boot</groupI…

塔能科技:智能機箱,為城市安防 “智” 造堅實堡壘

在當今智慧城市建設的浪潮中&#xff0c;城市安防面臨著諸多挑戰。設備管理難&#xff0c;眾多分散的安防設備猶如一盤散沙&#xff0c;難以實現高效統一的管控&#xff1b;數據傳輸不穩定&#xff0c;關鍵時刻信息的延遲或丟失&#xff0c;可能導致嚴重后果。這些問題嚴重制約…

電商數據分析 電商平臺銷售數據分析 電商平臺數據庫設計 揭秘電商怎么做數據分析

《電商參謀數據分析平臺方案》&#xff08;28頁PPT&#xff09;是一套為電商行業量身定制的一體化解決方案&#xff0c;它通過全鏈路打通從數據獲取到分析的全過程&#xff0c;幫助電商企業實現精細化運營和市場機會的挖掘。該方案針對電商行業在數據獲取、加工整合及業務賦能方…

uniapp uview 1.0 跨域h5配置多個代理、如何請求接口

參考文章&#xff1a;uniapp uView1.0跨域h5配置多個代理 官方手冊&#xff1a;http 請求 項目中使用&#xff1a; 參考其他博主的文章是在manifest.json中配置代理&#xff0c;但在官方的手冊中是直接在script請求的&#xff0c;我嘗試請求了下沒問題&#xff0c;上線后也不…

MAVEN解決版本依賴沖突

文章目錄 一、依賴沖突概念1、什么是依賴沖突2、依賴沖突的原因3、如何解決依賴沖突 二、查看依賴沖突-maven-helper1、安裝2、helper使用1、conflicts的閱讀順序&#xff08;從下向上看&#xff09;2、dependencies as List的閱讀順序&#xff08;從下向上看&#xff09;3、de…

79.ScottPlot的MVVM實現 C#例子 WPF例子

如何通過數據綁定在 WPF 中實現動態圖像顯示 在 WPF 應用程序中&#xff0c;通過數據綁定實現動態圖像顯示是一種高效且優雅的方式。以下是一個簡單的教程&#xff0c;展示如何使用 ScottPlot.WPF 庫和 MVVM 模式來實現這一功能。 第一步&#xff1a;安裝必要的 NuGet 包 首…

簡單工廠 、工廠方法模式和抽象工廠模式

簡單工廠 、工廠方法模式和抽象工廠模式 1.模式性質與定位 簡單工廠:并非正式的設計模式(屬編程習慣),通過單一工廠類根據參數判斷創建不同產品,本質是將對象創建邏輯集中管理。 工廠方法:是標準的創建型設計模式,定義抽象創建接口,由子類決定實例化哪個具體產品類,…

熱圖回歸(Heatmap Regression)

熱圖回歸(Heatmap Regression)是一種常用于關鍵點估計任務的方法,特別是在人體姿態估計中。它的基本思想是通過生成熱圖來表示某個關鍵點在圖像中出現的概率或強度。以下是熱圖回歸的主要特點和工作原理: 主要特點 熱圖表示: 每個關鍵點對應一個熱圖,熱圖中的每個像素值…

Word 小黑第15套

對應大貓16 修改樣式集 導航 -查找 第一章標題不顯示 再選中文字 點擊標題一 修改標題格式 格式 -段落 -換行和分頁 勾選與下段同頁 添加腳注 &#xff08;腳注默認位于底部 &#xff09;在腳注插入文檔屬性&#xff1a; -插入 -文檔部件 -域 類別選擇文檔信息&#xff0c;域…

Java 大視界 -- Java 大數據在智能安防視頻摘要與檢索技術中的應用(128)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

Python里matplotlib不顯示中文的問題

在很長一段時間里用Python繪圖&#xff0c;matplotlib都不能很好的顯示中文&#xff0c;起初是認為我的pycharm里的設置問題&#xff0c;但是發現同樣的問題在spyder里也同樣的出現。 一共有兩種解決方案&#xff0c;我強烈推薦第一種&#xff0c;因為更為方便&#xff0c;繪圖…

JavaWeb-servlet6中request和response的使用

HttpServletRequest HttpServletRequest 繼承自 ServletRequest。客戶端瀏覽器發出的請求被封裝成為一個 HttpServletRequest對象。 對象包含了客戶端請求信息包括請求的地址&#xff0c;請求的參數&#xff0c;提交的數據&#xff0c;上傳的文件客戶端的ip甚至客戶端操作系統…

機器學習(吳恩達)

一, 機器學習 機器學習定義: 計算機能夠在沒有明確的編程情況下學習 特征: 特征是描述樣本的屬性或變量&#xff0c;是模型用來學習和預測的基礎。如: 房屋面積, 地理位置 標簽: 監督學習中需要預測的目標變量&#xff0c;是模型的輸出目標。如: 房屋價格 樣本: 如: {面積100㎡…

CNN的激活函數

我們來對比 Sigmoid、Softmax 和 ReLU 這三種激活函數的相同點和不同點&#xff0c;并分別說明它們相較于其他兩種激活函數的優點。 相同點 都是非線性激活函數&#xff1a; 這三種激活函數都能為神經網絡引入非線性特性&#xff0c;使網絡能夠學習復雜的模式。 廣泛應用于深度…

Oracle數據恢復:閃回查詢

Oracle數據恢復:閃回查詢 SQL語法閃回查詢:AS OF閃回版本查詢:VERSIONS BETWEEN數據恢復示例閃回查詢最佳實踐應用場景使用限制注意事項最佳實踐在誤刪除業務數據時,Oracle數據庫通常支持以下幾種數據恢復途徑。 閃回查詢(Flashback Query):閃回查詢通過查詢系統的UNDO數…

【MySQL篇】MySQL內置函數

目錄 1&#xff0c;日期函數 2&#xff0c;字符串函數 3&#xff0c;數學函數 4&#xff0c;其他函數 實戰OJ 1&#xff0c;日期函數 日期類型在之前文章【數據類型】中有描述 傳送門&#xff1a;【MySQL篇】數據類型_mysql 數據類型-CSDN博客 函數名稱描述current_dat…

蘋果iOS 18.4將強制升級HomeKit架構,舊版設備或無法使用

在科技飛速發展的當下,智能家居領域也在不斷革新。而蘋果公司作為科技行業的巨頭,其每一次動作都備受關注。近日,有消息稱蘋果計劃在iOS 18.4版本中停止對舊版HomeKit架構的支持,這一舉措意味著用戶將被迫升級,也可能對眾多使用Apple Home應用的智能家居設備用戶產生深遠影…