欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言字符函數(shù)與字符串函數(shù)的實現(xiàn)示例

 更新時間:2024年11月05日 11:20:03   作者:愛編程的小新☆  
C語言標(biāo)準(zhǔn)庫中的<ctype.h>和<string.h>頭文件分別提供了豐富的字符處理和字符串處理函數(shù),本文就來介紹一下C語言字符函數(shù)與字符串函數(shù)的實現(xiàn)示例,感興趣的可以了解一下

1. 字符函數(shù)

在C語言標(biāo)準(zhǔn)庫中提供了一系列用于處理字符的函數(shù),這些函數(shù)定義在 <ctype.h>頭文件中。

字符函數(shù)分為兩種:字符分類函數(shù)和字符轉(zhuǎn)換函數(shù)

1.1 字符分類函數(shù)

C語?中有?系列的函數(shù)是專?做字符分類的,也就是?個字符是屬于什么類型的字符。

例如:islower函數(shù)是判斷參數(shù)部分是否為小寫字母,如果是小寫字母就返回非0的數(shù)字,如果不是小寫字母就返回0

#include<stdio.h>
#include<ctype.h>
int main()
{
	char c = 'A';
	int ret = islower(c);
	printf("%d", ret);
	return 0;
}

運行結(jié)果:

練習(xí):寫?個代碼,將字符串中的?寫字?轉(zhuǎn)?寫,其他字符不變。

#include<stdio.h>
#include<ctype.h>
int main()
{
	char str[] = "hello world";
	int i = 0;
	while (str[i])
	{
		if (islower(str[i]))
		{
			str[i] = str[i] - 32;
		}
		i++;
	}
	printf("%s", str);
	return 0;
}

運行結(jié)果:

對于剩余的字符分類函數(shù),大家可以手動進(jìn)行嘗試一下,這里就不在進(jìn)行詳細(xì)介紹啦

1.2 字符轉(zhuǎn)換函數(shù)

C語?提供了2個字符轉(zhuǎn)換函數(shù):

tolower ( c ); //將參數(shù)傳進(jìn)去的?寫字?轉(zhuǎn)?寫
toupper ( c ); //將參數(shù)傳進(jìn)去的?寫字?轉(zhuǎn)?寫

tolower函數(shù)示例:

#include<stdio.h>
#include<ctype.h>
int main()
{
	char c=tolower('A');
	printf("%c", c);
	return 0;
}

 

toupper函數(shù)示例:

#include<stdio.h>
#include<ctype.h>
int main()
{
	char c=toupper('a');
	printf("%c", c);
	return 0;
}

學(xué)習(xí)完字符轉(zhuǎn)換函數(shù)后,我們將上面練習(xí)的代碼進(jìn)行改造一下:

int main()
{
	char str[] = "hello world";
	int i = 0;
	while (str[i])
	{
		if (islower(str[i]))
		{
			str[i] = toupper(str[i]);
		}
		i++;
	}
	printf("%s", str);
	return 0;
}

上?的代碼,我們將?寫轉(zhuǎn)?寫,是-32完成的效果,有了轉(zhuǎn)換函數(shù),就可以直接使? tolowe函數(shù)。

2. 字符串函數(shù)

在C語言標(biāo)準(zhǔn)庫中的<string.h>頭文件中提供了一系列用于處理字符串的函數(shù),這些函數(shù)用于字符串的復(fù)制、連接、比較、搜索、分割等操作。

下面介紹一些C語言中常用的字符串函數(shù)

2.1 strlen 函數(shù)

strlen函數(shù)是用來計算參數(shù)(字符串)長度的(不包括終止的空字符 \0 )

strlen函數(shù)的注意事項:

  • 字符串以 '\0' 作為結(jié)束標(biāo)志,strlen函數(shù)返回的是在字符串中 '\0' 前?出現(xiàn)的字符個數(shù)(不包    含 '\0' )。
  • 參數(shù)指向的字符串必須要以 '\0' 結(jié)束。
  • 注意函數(shù)的返回值為 size_t,是?符號的( 易錯 )
  •  strlen的使?需要包含頭?件

strlen函數(shù)的使用:

注意這里的初始化方式會在 str字符數(shù)組默認(rèn)最后加上一個 \0,如果用另一種初始化方式會出現(xiàn)什么現(xiàn)象呢?

為什么這里計算str字符數(shù)組的長度是74呢?因為這里的初始化方式是不會自動補(bǔ)上 \0,所以strlen函數(shù)會根據(jù)地址一直往后找,直到找到 \0,所以這里的 74 實際上是一個隨機(jī)值。

此時我們在數(shù)組的末尾加上 \0 這時候strlen函數(shù)計算的結(jié)果就是 \0前面的字符個數(shù)。 

2.2 strcpy 函數(shù)

strcpy函數(shù)會將源指向的字符串復(fù)制到目標(biāo)指向的數(shù)組中,包括終止的空字符(并在該點停止)

strcpy函數(shù)的注意事項: 

  • destination指向字符串復(fù)制到的數(shù)組,source指向要復(fù)制的字符串
  • 源字符串必須以 '\0' 結(jié)束。
  • 會將源字符串中的 '\0' 拷?到?標(biāo)空間。
  • ?標(biāo)空間必須?夠?,以確保能存放源字符串。(否則會出現(xiàn)棧幀空間溢出的現(xiàn)象)
  • ?標(biāo)空間必須可修改。

例如:

2.3 strcat 函數(shù)

strcat函數(shù)是將字符串source連接到destination的末尾(包括終止的空字符 \0)

strcat函數(shù)的注意事項:

  • 源字符串必須以 '\0' 結(jié)束。
  • ?標(biāo)字符串中也得有 \0 ,否則沒辦法知道追加從哪?開始。
  • ?標(biāo)空間必須有?夠的?,能容納下源字符串的內(nèi)容。
  • ?標(biāo)空間必須可修改。

例如:

注意這里被追加的目標(biāo)空間必須保證足夠大,否則也會出現(xiàn)棧幀空間溢出的現(xiàn)象

那么strcat函數(shù)是否可以自己追加自己呢?其實是可以的,但是一般不會這樣使用,使用不當(dāng)很容易造成死循環(huán)的問題 ,對于自己追加自己,我們一般使用strncat函數(shù),在下面我們將會了解到strncat函數(shù)。

2.4 strcmp 函數(shù)

strcmp函數(shù)是用于兩個字符串進(jìn)行比較的

  • 如果第?個字符串?于第?個字符串,則返回?于0的數(shù)字
  • 如果第?個字符串等于第?個字符串,則返回0
  • 如果第?個字符串?于第?個字符串,則返回?于0的數(shù)字 

例如:

2.5 strncpy 函數(shù)

strncpy和strcpy是非常相似的,strncpy在參數(shù)部分加上了復(fù)制的字節(jié)個數(shù)(size_t  num)

用法與strcpy也是一模一樣的,只是這時候可以由我們操控復(fù)制多少個字節(jié)(num)到目標(biāo)位置。

例如:

注意:如果源字符串的?度?于num,則拷?完源字符串之后,在?標(biāo)的后邊追加0,直到num個。 

2.6 strncat 函數(shù)

對比strcat函數(shù),strncat函數(shù)在參數(shù)部分也多了一個(size_t num)追加的字節(jié)個數(shù)

例如:

這時候就可以自己操控自己想要追加的內(nèi)容了

注意:如果source 指向的字符串的?度?于num的時候,只會將字符串中到 \0 的內(nèi)容追加到destination指向的字符串末尾

例如:

2.7 strncmp 函數(shù)

對比strcmp函數(shù),strncmp函數(shù)在參數(shù)部分也多了一個(size_t num)比較的字節(jié)個數(shù)

?較str1和str2的前num個字符,如果相等就繼續(xù)往后?較,最多?較num個字?,如果提前發(fā)現(xiàn)不? 樣,就提前結(jié)束,?的字符所在的字符串?于另外?個。如果num個字符都相等,就是相等返回0

例如:

 此時只是比較的str1和str2中的前3個字符,前三個字符相等所以返回值為0

2.8 strstr 函數(shù)

strstr函數(shù)的作用是在一個字符串(str1)中查找第一次出現(xiàn)的子字符串(str2),并返回指向該子字符串的指針,如果沒有找到子字符串,則返回NULL(空指針)

例如:

結(jié)語

以上就是C語言中常見的字符函數(shù)以及字符串函數(shù),到此這篇關(guān)于C語言字符函數(shù)與字符串函數(shù)的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)C語言字符函數(shù)與字符串函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入淺出理解C語言初識結(jié)構(gòu)體

    深入淺出理解C語言初識結(jié)構(gòu)體

    C?數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結(jié)構(gòu)是?C?編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項,本篇讓我們來了解C?的結(jié)構(gòu)體
    2022-02-02
  • QT TCP實現(xiàn)簡單的通信示例

    QT TCP實現(xiàn)簡單的通信示例

    這篇文章主要為大家詳細(xì)介紹了QT TCP簡單的通信示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • QT調(diào)用vs2019生成的c++動態(tài)庫的方法實現(xiàn)

    QT調(diào)用vs2019生成的c++動態(tài)庫的方法實現(xiàn)

    本文主要介紹了QT調(diào)用vs2019生成的c++動態(tài)庫的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 使用c++11 constexpr時遇到的坑詳解

    使用c++11 constexpr時遇到的坑詳解

    c++11 constexpr將變量聲明為constexpr類型以便由編譯器來驗證變量是否是一個常量表達(dá)式,這篇文章主要給大家介紹了關(guān)于使用c++11 constexpr時遇到的坑,需要的朋友可以參考下
    2021-05-05
  • C語言實現(xiàn)猜數(shù)字小游戲的示例代碼

    C語言實現(xiàn)猜數(shù)字小游戲的示例代碼

    猜數(shù)字小游戲是我們小時候喜歡我們一個經(jīng)典小游戲。這篇文章將利用C語言中的循環(huán)語句、分支語句和函數(shù)實現(xiàn)這一游戲,需要的可以參考一下
    2022-10-10
  • 解析C++中的字符串處理函數(shù)和指針

    解析C++中的字符串處理函數(shù)和指針

    這篇文章主要介紹了解析C++中的字符串處理函數(shù)和指針,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • C++中for auto的用法及說明

    C++中for auto的用法及說明

    這篇文章主要介紹了C++中for auto的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C++實現(xiàn)拓?fù)渑判颍ˋOV網(wǎng)絡(luò))

    C++實現(xiàn)拓?fù)渑判颍ˋOV網(wǎng)絡(luò))

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)拓?fù)渑判颍闹惺纠a介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++超詳細(xì)講解RTTI和cast運算符的使用

    C++超詳細(xì)講解RTTI和cast運算符的使用

    RTTI(Runtime Type Identification)是“運行時類型識別”的意思。C++引入這個機(jī)制是為了讓程序在運行時能根據(jù)基類的指針或引用來獲得該指針或引用所指的對象的實際類型,cast強(qiáng)制轉(zhuǎn)換運算符是一種特殊的運算符,它把一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型
    2022-08-08
  • 基于atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法詳解

    基于atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法詳解

    本篇文章是對atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05

最新評論