專欄導航
本節文章分別屬于《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博客
運算結果如下:

三.? ? 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