編程技能:字符串函數10,strchr

專欄導航

本節文章分別屬于《Win32 學習筆記》和《MFC 學習筆記》兩個專欄,故劃分為兩個專欄導航。讀者可以自行選擇前往哪個專欄。

(一)WIn32 專欄導航

上一篇:編程技能:字符串函數09,strncmp

回到目錄

下一篇:編程技能:字符串函數11,strrchr

(二)MFC 專欄導航

上一篇:編程技能:字符串函數09,strncmp

回到目錄

下一篇:編程技能:字符串函數11,strrchr

本節前言

之前的兩節,我們講解了字符串比較函數。

從本節開始,我們來學習,在字符串中查找某一個字符。

一. ? ?strchr 基本介紹

想要使用 strchr 函數,如果是想要在 C 語言里面使用,那么,你需要有【#include <string.h>】一行。如果是想要在 C++ 里面使用,你需要有【#include <cstring>】一行。

下面,是 strchr 函數的原型聲明。

char * strchr(const char * s, char c);

我在這里所列的原型聲明,它只是我從 Linux 0.12 內核中提取出來的一種聲明而已。在 Visual Studio 里面,它的聲明形式不是這樣子的。但是呢,我在這里列舉出來的聲明,它是可用的。

此函數的功能是,在 s 所指向的字符串里面,從左到右來查找,查找 ASCII 碼值與參數 c 相等的字符。如果查到了,則返回第一個匹配字符的指針。如果未查到,則返回 NULL 。

此函數不難。我們還是分別用 C 語言和 C++ 代碼來演示它的使用方法。

二.? ??strchr 的 C 語言代碼示例

代碼如下。

#include <stdio.h>
#include <string.h>int main(void)
{int index;char* p;char str[] = "Program";char ch = 'a';p = strchr(str, ch);if (NULL == p){printf("未查找到指定字符。\n");}else{index = p - str;printf("原字符串指針:%p\n", str);printf("查到的字符的指針:%p\n", p);printf("查到的字符的索引:%d\n", index);}return 0;
}

上述代碼,是可以直接在 Visual Studio 里面運行的。

大家若是還不會使用 Visual Studio,可以參考下述鏈接所示的兩篇文章,來學習使用 Visual Studio 來建立解決方案和編譯運行解決方案的方法。

Windows編程:使用 VS2010 編寫 C語言程序-CSDN博客

Windows編程:用 VS2019 編寫C語言程序-CSDN博客

運算結果如下:

圖1

三.? ? strchr 的 C++ 代碼示例

代碼如下。

#include <iostream>
#include <cstring>
using namespace std;int main(void)
{int index;char* p;char str[] = "Program";char ch = 'a';p = strchr(str, ch);if (NULL == p){cout << "未查找到指定字符。\n";}else{index = p - str;cout << "原字符串指針:" << (void*)str << endl;cout << "查到的字符的指針:" << (void *)p << endl;cout << "查到的字符的索引:" << index << endl;}return 0;
}

以上代碼,我們需要注意的是以下兩行。

cout << "原字符串指針:" << (void*)str << endl;
cout << "查到的字符的指針:" << (void *)p << endl;

為啥要將兩個 char* 類型的變量轉換為 void* 呢?如果不轉換的話,對于 char* 類型,C++ 輸出的將會是這個字符指針所指示的字符串。而將其轉換為 void* 類型以后,輸出的,就是指針了。

我的感覺,C++ 雖說強大。但是呢,很多時候,我還是更喜歡用 C 語言。因為它簡潔,好用。C++ 的話,功能強大,語法的細節也太多。細節多的話,用起來自然就會比較繁瑣。還是 C 語言簡潔啊。

不過,在這個時代里面,用 C++ 來開發軟件,仍然會是一種推薦的主要編程語言。純粹用 C 語言來寫程序,我覺得,大神有資格這么去做。我還沒有這個資格啊。

結束語

本節的內容,我覺得還好吧。

希望大家能夠學好本節知識。

?專欄導航

本節文章分別屬于《Win32 學習筆記》和《MFC 學習筆記》兩個專欄,故劃分為兩個專欄導航。讀者可以自行選擇前往哪個專欄。

(一)WIn32 專欄導航

上一篇:編程技能:字符串函數09,strncmp

回到目錄

下一篇:編程技能:字符串函數11,strrchr

(二)MFC 專欄導航

上一篇:編程技能:字符串函數09,strncmp

回到目錄

下一篇:編程技能:字符串函數11,strrchr

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

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

相關文章

動態規劃-53.最大子數組和-力扣(LeetCode)

一、題目解析 在給定順序的數組中找出一段具有最大和的連續子數組&#xff0c;且大小最小為1. 二、算法原理 1.狀態表示 我們可以意一一枚舉出所有的子數組&#xff0c;但我們想要的是最大子數組&#xff0c;所以f[i]表示&#xff1a;以i位置為結尾&#xff0c;所有子數組的最…

C++ queue對象創建、queue賦值操作、queue入隊、出隊、獲得隊首、獲得隊尾操作、queue大小操作、代碼練習

對象創建&#xff0c;代碼見下 #include<iostream> #include<queue>using namespace std;int main() {// 1 默認構造函數queue<int> q1;// 2 拷貝構造函數queue<int> q2(q1);return 0;} queue賦值操作&#xff0c;代碼見下 #include<iostream>…

全鏈路解析:影刀RPA+Coze API自動化工作流實戰指南

在數字化轉型加速的今天&#xff0c;如何通過RPA與API的深度融合實現業務自動化提效&#xff0c;已成為企業降本增效的核心命題。本文以「影刀RPA」與「Coze API」的深度協作為例&#xff0c;系統性拆解從授權配置、數據交互到批量執行的完整技術鏈路&#xff0c;助你快速掌握跨…

php本地 curl 請求證書問題解決

錯誤: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for 解決方案 在php目錄下創建證書文件夾, 執行下面生成命令, 然后在php.ini 文件中配置證書路徑; 重啟環境 curl --eta…

【圖數據庫】--Neo4j 安裝

目錄 1.Neo4j --概述 2.JDK安裝 3.Neo4j--下載 3.1.下載資源包 3.2.創建環境變量 3.3.運行 Neo4j 是目前最流行的圖形數據庫(Graph Database)&#xff0c;它以節點(Node)、關系(Relationship)和屬性(Property)的形式存儲數據&#xff0c;專門為處理高度連接的數據而設計。…

MIT 6.S081 2020Lab5 lazy page allocation 個人全流程

文章目錄 零、寫在前面一、Eliminate allocation from sbrk()1.1 說明1.2 實現 二、Lazy allocation2.1 說明2.2 實現 三、Lazytests and Usertests3.1 說明3.2 實現3.2.1 lazytests3.2.2 usertests 零、寫在前面 可以閱讀下4.6頁面錯誤異常 像應用程序申請內存&#xff0c;內…

(Git) 稀疏檢出(Sparse Checkout) 拉取指定文件

文章目錄 &#x1f3ed;作用&#x1f3ed;指令總覽&#x1f477;core.sparseCheckout&#x1f477;sparse-checkout 文件 &#x1f3ed;實例演示?END&#x1f31f;交流方式 &#x1f3ed;作用 類似于 .gitignore 進行文件的規則匹配。 一般在需要拉取大型項目指定的某些文件…

docker初學

加載鏡像&#xff1a;docker load -i ubuntu.tar 導出鏡像&#xff1a;docker save -o ubuntu1.tar ubuntu 運行&#xff1a; docker run -it --name mu ubuntu /bin/bash ocker run -dit --name mmus docker.1ms.run/library/ubuntu /bin/bash 進入容器&#xff1a;docke…

Docker系列(二):開機自啟動與基礎配置、鏡像加速器優化與疑難排查指南

引言 docker 的快速部署與高效運行依賴于兩大核心環節&#xff1a;基礎環境搭建與鏡像生態優化。本期博文從零開始&#xff0c;系統講解 docker 服務的管理配置與鏡像加速實踐。第一部分聚焦 docker 服務的安裝、權限控制與自啟動設置&#xff0c;確保環境穩定可用&#xff1b…

計算機視覺(圖像算法工程師)學習路線

計算機視覺學習路線 Python基礎 常量與變量 列表、元組、字典、集合 運算符 循環 條件控制語句 函數 面向對象與類 包與模塊Numpy Pandas Matplotlib numpy機器學習 回歸問題 線性回歸 Lasso回歸 Ridge回歸 多項式回歸 決策樹回歸 AdaBoost GBDT 隨機森林回歸 分類問題 邏輯…

工業軟件國產化:構建自主創新生態,賦能制造強國建設

隨著全球產業環境的變化和技術的發展&#xff0c;建立自主可控的工業體系成為我國工業轉型升級、走新型工業化道路、推動國家制造業競爭水平提升的重要抓手。 市場倒逼與政策護航&#xff0c;國產化進程雙輪驅動 據中商產業研究院預測&#xff0c;2025年中國工業軟件市場規模…

OpenCV CUDA 模塊圖像過濾------創建一個高斯濾波器函數createGaussianFilter()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::cuda::createGaussianFilter 是 OpenCV CUDA 模塊中的一個工廠函數&#xff0c;用于創建一個高斯濾波器。這個濾波器可以用來平滑圖像&#…

【RocketMQ 生產者和消費者】- 生產者發送故障延時策略

文章目錄 1. 前言2. FaultItem3. LatencyFaultToleranceImpl 容錯集合處理類3.1 updateFaultItem 更新容錯集合3.2 isAvailable 判斷 broker 是否可用3.3 pickOneAtLeast 至少選出一個故障 broker 4. MQFaultStrategy 故障策略類4.1 屬性4.2 updateFaultItem 更新延遲故障容錯信…

【HarmonyOS 5】Map Kit 地圖服務之應用內地圖加載

#HarmonyOS SDK應用服務&#xff0c;#Map Kit&#xff0c;#應用內地圖 目錄 前期準備 AGC 平臺創建項目并創建APP ID 生成調試證書 生成應用證書 p12 與簽名文件 csr 獲取 cer 數字證書文件 獲取 p7b 證書文件 配置項目簽名 項目開發 配置Client ID 開通地圖服務 配…

(1-6-1)Java 集合

目錄 0.知識概述&#xff1a; 1.集合 1.1 集合繼承關系類圖 1.2 集合遍歷的三種方式 1.3 集合排序 1.3.1 Collections實現 1.3.2 自定義排序類 2 List 集合概述 2.1 ArrayList &#xff08;1&#xff09;特點 &#xff08;2&#xff09;常用方法 2.2 LinkedList 3…

Vue.extend

Vue.extend 是 Vue 2 中的一個重要 API&#xff0c;用于基于一個組件配置對象創建一個“可復用的組件構造函數”。它是 Vue 內部構建組件的底層機制之一&#xff0c;適用于某些高級用法&#xff0c;比如手動掛載組件、彈窗動態渲染等。 ?? 在 Vue 3 中已被移除&#xff0c;V…

【MySQL系列】SQL 分組統計與排序

博客目錄 引言一、基礎語法解析二、GROUP BY 的底層原理三、ORDER BY 的排序機制四、NULL 值的處理策略五、性能優化建議六、高級變體查詢 引言 在現代數據分析和數據庫管理中&#xff0c;分組統計是最基礎也是最核心的操作之一。無論是業務報表生成、用戶行為分析還是系統性能…

spring中的InstantiationAwareBeanPostProcessor接口詳解

一、接口定位與核心功能 InstantiationAwareBeanPostProcessor是Spring框架中擴展Bean生命周期的關鍵接口&#xff0c;繼承自BeanPostProcessor。它專注于Bean的實例化階段&#xff08;對象創建和屬性注入&#xff09;的干預&#xff0c;而非父接口的初始化階段&#xff08;如…

uniapp使用sse連接后端,接收后端推過來的消息(app不支持!!)

小白終成大白 文章目錄 小白終成大白前言一、什么是SSE呢&#xff1f;和websocket的異同點有什么&#xff1f;相同點不同點 二、直接上實現代碼總結 前言 一般的請求就是前端發 后端回復 你一下我一下 如果需要有什么實時性的 后端可以主動告訴前端的技術 我首先會想到 webso…

QML學習06Button

QMLx學習06Button 1、Button1.1 狀態改變&#xff08;checkable&#xff09;1.2 排斥性&#xff08;autoExclusive&#xff09;1.3 重復觸發&#xff08;autoRepeat&#xff09;、第一次觸發延時時間&#xff08;autoRepeatDelay&#xff09;、相互之間觸發的時間間隔&#xff…