字符串函數strchr()詳解

一、strchr()函數的作用

字符串函數 strchr() 是 C 語言的一個標準庫函數,它的作用是在一個字符串中查找給定字符的第一個匹配之處,并返回指向該字符的指針。如果沒有找到該字符,則返回 NULL。1

二、strchr()函數的原型和參數

strchr()函數的原型定義在頭文件 <string.h> 中,如下所示:

char *strchr(const char *str, int c);

strchr()函數的參數有兩個:

  • str:要查找的字符串,必須是一個以空字符 ‘\0’ 結尾的字符數組,也就是 C 語言中的字符串類型。
  • c:要查找的字符,必須是一個整型值,通常是一個字符常量或變量,例如 ‘a’ 或 ch。如果 c 是一個多字節字符,例如漢字,那么只會查找其第一個字節。

三、strchr()函數的返回值

strchr()函數的返回值是一個字符指針,它指向的是在字符串 str 中第一次出現字符 c 的位置。如果在字符串 str 中找到了字符 c,那么返回的指針就是 str + i,其中 i 是字符 c 在字符串 str 中的索引,從 0 開始計數。如果在字符串 str 中沒有找到字符 c,那么返回的指針就是 NULL,也就是 0。

注意,字符串結尾的空字符 ‘\0’ 也視為 str 的一部分,因此可以通過定位 ‘\0’ 得到一個指向字符串末尾的指針。

四、strchr()函數的使用示例

下面給出一個使用 strchr() 函數的簡單示例,它在字符串 "Hello, World!" 中查找字符 ‘o’,并輸出其在字符串中第一次出現的位置和之后的字符串。

#include <stdio.h>
#include <string.h>int main()
{const char *str = "Hello, World!"; // 要查找的字符串char ch = 'o'; // 要查找的字符char *ptr; // 用于接收返回的指針ptr = strchr(str, ch); // 調用 strchr() 函數if (ptr != NULL) // 如果找到了字符{printf("The character '%c' is found at position: %ld\n", ch, ptr - str + 1); // 輸出字符的位置printf("|%c| and the rest of the string is - |%s|\n", ch, ptr); // 輸出字符和之后的字符串}else // 如果沒有找到字符{printf("The character '%c' was not found in the string.\n", ch); // 輸出提示信息}return 0;
}

運行結果如下:

The character 'o' is found at position: 5
|o| and the rest of the string is - |o, World!|

五、strchr()函數的注意事項

在使用 strchr() 函數時,需要注意以下幾點:

  • strchr() 函數只能查找單個字符,不能查找字符串。如果要查找字符串,可以使用 strstr() 函數。
  • strchr() 函數只能查找字符的第一個匹配,不能查找所有的匹配。如果要查找所有的匹配,可以使用循環或遞歸的方法。
  • strchr() 函數對于大小寫敏感,也就是說,它會區分字符 ‘a’ 和 ‘A’。如果要忽略大小寫,可以使用 strcasecmp() 函數。
  • strchr() 函數對于多字節字符的支持不完善,也就是說,它只會查找多字節字符的第一個字節。如果要查找多字節字符,可以使用 wstrchr() 函數。

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

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

相關文章

【筆記】:更方便的將一個List中的數據傳入另一個List中,避免多重循環

這里是 simpleInfoList 集合&#xff0c;記為集合A&#xff08;傳值對象&#xff09; List<CourseSimpleInfoDTO> simpleInfoList courseClient.getSimpleInfoList(courseIds);if(simpleInfoListnull){throw new BizIllegalException("當前課程不存在!");}這…

【Spring連載】使用Spring Data----對象映射基礎Object Mapping Fundamentals

【Spring連載】使用Spring Data----對象映射基礎Object Mapping Fundamentals 一、對象創建1.1 對象創建內部機制Object creation internals 二、屬性填充Property population2.1 屬性填充內部機制Property population internals 三、一般建議3.1 覆蓋屬性 四、Kotlin支持4.1 K…

libigl 網格中點細分(網格上采樣)

文章目錄 一、簡介二、實現代碼三、實現效果參考資料一、簡介 在網格細分中,我們可以將每個三角形分成若干個更小的三角形。其中最簡單的情況就是通過計算每個三角形每條邊的中點,這樣就可以將三角形分成四個更小的三角形。不過該方法并不會使得網格的表面和面積發生變化,而…

Python:練習:編寫一個程序,寫入一個美金數量,然后顯示出如何用最少的20美元、10美元、5美元和1美元來付款

案例&#xff1a; python編寫一個程序&#xff0c;寫入一個美金數量&#xff0c;然后顯示出如何用最少的20美元、10美元、5美元和1美元來付款&#xff1a; Enter a dollar amout:93 $20 bills: 4 $10 bills: 1 $5 bills:0 $1 bills:3 思考&#xff1a; 寫入一個美金數量&…

數據分析Pandas專欄---第十一章<Pandas數據聚合與分組(1)>

前言: 數據聚合和分組操作是數據處理過程中不可或缺的一部分。它們允許我們根據特定的條件對數據進行分組&#xff0c;并對每個組進行聚合計算。這對于統計分析、匯總數據以及生成報告和可視化非常有用。無論是市場營銷數據分析、銷售業績評估還是金融數據建模&#xff0c;數據…

【數據分享】2000~2023年MOD15A2H 061 葉面積指數LAI數據集

各位同學們好&#xff0c;今天和大伙兒交流的是2000~2013年MOD15A2H 061 LAI數據集。如果大家有下載處理數據等方面的問題&#xff0c;您可以私信或評論。 Myneni, R., Y. Knyazikhin, T. Park. MODIS/Terra Leaf Area Index/FPAR 8-Day L4 Global 500m SIN Grid V061. 2021, d…

在原有項目進行業務邏輯開發:同一用戶短時間不得提交多次申請,以及更新主表時數據刷新掉了角色權限以及密碼重置的問題,詳細思路及代碼

開發背景&#xff1a; 用戶提交表單后&#xff0c;插入到對應數據庫表的字段中去&#xff0c;因需要保存是哪一個用戶提交的&#xff0c;所以需要拿到主表的user_id&#xff0c;更新功能為記錄提交時間&#xff0c;短時間不得再次提交 在對一個已有角色權限分配&#xff0c;登錄…

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之對象引用

【Spring連載】使用Spring Data訪問 MongoDB----對象映射之對象引用 一、使用DBRefs 一、使用DBRefs

layui中,父頁面與子頁面,函數方法的相互調用、傳參

<%--父頁面--%> <script type"text/javascript">var KaoHaoType 0; // 考號類型 自定義參數1// 選取考號類型function SelectKaoHaoType(callBack) {KaoHaoType 0; // 默認選擇填涂考號layer.open({type: 2, title: 請選擇 考號區類型, ar…

職場中被小人欺負了,應該一笑了之嗎?還是怎么辦?

在職場中遇到不公正的待遇或被欺負&#xff0c;確實是一個讓人困擾的問題。處理這類問題&#xff0c;首先要保持冷靜和理性&#xff0c;避免情緒化的反應&#xff0c;這樣有助于找到最合適的解決方案。以下是一些建議&#xff0c;您可以根據具體情況考慮&#xff1a; 1. **保持…

如何使用 Socket.IO、Angular 和 Node.js 創建實時應用程序

介紹 WebSocket 是一種允許服務器和客戶端之間進行全雙工通信的互聯網協議。該協議超越了典型的 HTTP 請求和響應范式。通過 WebSocket&#xff0c;服務器可以向客戶端發送數據&#xff0c;而無需客戶端發起請求&#xff0c;因此可以實現一些非常有趣的應用程序。 在本教程中…

網絡編程作業day2

1.將TPC和UDP通信模型各敲兩遍 &#xff08;1&#xff09;TPC通信模型&#xff1a; 服務器代碼&#xff1a; #include <myhead.h> #define SERVER_IP "192.168.125.136" #define SERVER_PORT 1314 int main(int argc, const char *argv[]) {//1、創建用于監…

CLion 2023:專注于C和C++編程的智能IDE mac/win版

JetBrains CLion 2023是一款專為C和C開發者設計的集成開發環境&#xff08;IDE&#xff09;&#xff0c;它集成了許多先進的功能&#xff0c;旨在提高開發效率和生產力。 CLion 2023軟件獲取 CLion 2023的智能代碼編輯器提供了豐富的代碼補全和提示功能&#xff0c;使您能夠更…

統計業務流量的毫秒級峰值 - 華為機試真題題解

考試平臺&#xff1a; 時習知 分值&#xff1a; 200分&#xff08;第二題&#xff09; 考試時間&#xff1a; 兩小時&#xff08;共3題&#xff09; 題目描述 業務模塊往外發送報文時&#xff0c;有時會出現網卡隊列滿而丟包問題&#xff0c;但從常規的秒級流量統計結果看&…

Mybatis-Plus介紹

目錄 一、Mybatis-Plus簡介 1.1、介紹 1.2、特性 1.3、架構 1.4、Mybatis-Plus與Mybatis的區別 二、快速入門 2.1、首先創建數據庫mybatis-plus 2.2、創建user表 2.3、插入數據 2.4、創建Spring-Boot項目 2.5、添加依賴 2.6、連接數據庫 一、Mybatis-Plus簡介 1.1、…

代碼隨想錄第46天|139.單詞拆分 多重背包理論基礎 背包總結

文章目錄 單詞拆分思路&#xff1a;代碼 多重背包≈0-1背包題目代碼 背包總結 單詞拆分 3 思路&#xff1a; 代碼 class Solution {public boolean wordBreak(String s, List<String> wordDict) {HashSet<String> set new HashSet<>(wordDict);boolean[]…

15個非常實用的JavaScript技巧,提高你的開發效率

本文我們將探討15個實用的JavaScript技巧&#xff0c;希望它們可以幫你提高開發效率&#xff0c;有用的話點贊收藏~。 1. 反轉字符串 你有時候可能需要將字符串顛倒過來。在JavaScript中&#xff0c;有一個巧妙的一行代碼可以實現這個目標&#xff1a; const reversedString…

sheng的學習筆記-卷積神經網絡經典架構-LeNet-5、AlexNet、VGGNet-16

目錄&#xff1a;目錄 看本文章之前&#xff0c;需要學習卷積神經網絡基礎&#xff0c;可參考 sheng的學習筆記-卷積神經網絡-CSDN博客 目錄 LeNet-5 架構圖 層級解析 1、輸入層&#xff08;Input layer&#xff09; 2、卷積層C1&#xff08;Convolutional layer C1&…

Dockerfile(5) - CMD 指令詳解

CMD 指定容器默認執行的命令 # exec 形式&#xff0c;推薦 CMD ["executable","param1","param2"] CMD ["可執行命令", "參數1", "參數2"...]# 作為ENTRYPOINT的默認參數 CMD ["param1","param…

VUE3自定義文章排行榜的簡單界面

文章目錄 一、代碼展示二、代碼解讀三、結果展示 一、代碼展示 <template><div class"article-ranking"><div class"header"><h2 class"title">{{ title }}</h2></div><div class"ranking-list&qu…