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

C語言字符串函數(shù)入門

 更新時間:2022年01月03日 15:18:51   作者:build小春寶  
這篇文章主要為大家介紹了C語言字符串函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

實現(xiàn)字符串庫函數(shù)功能

有些時候我們可能會被限制無法使用庫函數(shù),這個時候我們需要編寫自己的庫函數(shù)。但了解了字符串庫函數(shù)的功能之后,想要實現(xiàn)并不困難,今天我們用數(shù)組和循環(huán)來簡單實現(xiàn)幾個字符串庫函數(shù)的功能。

1.strlen函數(shù)

strlen函數(shù)使用來求字符串長度的,遇到\0就會停止,并返回字符串的長度,接下來根據(jù)這個特性來編寫一下我們自己的strlen

int my_strlen(char string[]) {
	int count= 0;
	while (string[count] != NULL) {        
		count++;
	}
	return count;
}//也可以將while的判斷條件改為string[count]

有些小伙伴應該知道遞歸的實現(xiàn),但是這里涉及了指針的內(nèi)容,我就不教大家實現(xiàn)了

2.strcmp函數(shù)

strcmp字符串比較函數(shù),對兩個字符串進行比較,相當返回0,前一個字符串大于后一個字符串會返回大于0的數(shù),小于則返回小于0的數(shù),至于具體返回多少,則需要看編譯器。

在實現(xiàn)strcmp功能之前,我們需要了解它的機制,strcmp是一個字符一個字符的比較ASCII值的

int  my_strcmp(char string1[], char string2[]) {
	int i = 0;
	   //當兩個字符串都沒有達到末端時,繼續(xù)比較
	while ((string1[i] == string2[i]) && string1[i] && string2[i])
		i++;
	return string1[i] - string2[i]; //當兩個字符串指向的字符不一樣或者到達終點時返回差值
}

一個簡單的while循環(huán)就能達到目的

3.strcpy函數(shù)

字符串拷貝函數(shù),將后一個字符串拷貝到前一個字符串中,我們需要保證目的地足夠大

void my_strcpy(char string1[50], char string2[]) {
	int i = 0;
	while (string1[i++] = string2[i++]);
}
//這里利用了賦值表達式的特性,直接進行賦值,當string[i]為\0時賦值完循環(huán)自動停止
//當然這個程序并不是完美的,根據(jù)strcpy的返回值我們還可以這樣修改
char* my_strcpy(char string1[50], char string2[]) {
		int i = 0;
		while (string1[i++] = string2[i++]);
		return string1;
}//返回目的地的起始地址

4.strcat函數(shù)

strcat字符串追加,在一個字符串之后追加一個新的字符串,如果以strcpy的角度理解就是以第一個字符串的\0位置為起始地址進行字符串拷貝,那么接下來就很簡單了

char* my_strcat(char string1[50], char string2[]) {
	int i = -1;
	while (string1[++i]);//循環(huán)停止時i指向\0
	int j = 0;
	while (string1[i++] = string2[j++]); //與strcpy同理
	return string1;
}

5.strupr函數(shù)

strupr字符串大寫函數(shù),將所有字符串中的小寫字母都變成大寫,我們只需要根據(jù)ASCII值就可以簡單實現(xiàn)

char*my_strupr(char string[]) {
	int i = 0;
	while (string[i]) {       //當string[i]指向\0時循環(huán)停止
		if (string[i] >= 'a' && string[i] <= 'z')
		string[i] -= 32;
		i++;
	}
	return string;
}

6.strlwr函數(shù)

和strupr對應,這是字符串小寫函數(shù),把大寫轉(zhuǎn)成小寫,只需要對上面的代碼簡單一改就可以

char*my_strlwr(char string[]) {
	int i = 0;
	while (string[i]) {       //當string[i]指向\0時循環(huán)停止
		if (string[i] >= 'A' && string[i] <= 'Z')
		string[i] += 32;
		i++;
	}
	return string;
}

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • C語言常見排序算法之插入排序(直接插入排序,希爾排序)

    C語言常見排序算法之插入排序(直接插入排序,希爾排序)

    這篇文章介紹C語言常見排序算法之插入排序(直接插入排序,希爾排序),主要分享介紹的是插入排序的兩種常用算法,直接插入排序和希爾排序,需要的朋友可以參考一下
    2022-07-07
  • 用C語言實現(xiàn)簡易通訊錄

    用C語言實現(xiàn)簡易通訊錄

    這篇文章主要為大家詳細介紹了用C語言實現(xiàn)簡易通訊錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • VSCode配置C/C++并添加非工作區(qū)頭文件的方法

    VSCode配置C/C++并添加非工作區(qū)頭文件的方法

    這篇文章主要介紹了VSCode配置C/C++并添加非工作區(qū)頭文件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C++11新特性std::make_tuple的使用

    C++11新特性std::make_tuple的使用

    這篇文章主要介紹了C++11新特性std::make_tuple的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 五個嵌入式C語言中的實用技巧分享

    五個嵌入式C語言中的實用技巧分享

    這篇文章主要和大家分享一下五個嵌入式C語言中的實用技巧,文中的示例代碼講解詳細,對我們學習C語言有一定的幫助,需要的可以參考一下
    2022-12-12
  • C/C++ 中堆和棧及靜態(tài)數(shù)據(jù)區(qū)詳解

    C/C++ 中堆和棧及靜態(tài)數(shù)據(jù)區(qū)詳解

    這篇文章主要介紹了C/C++ 中堆和棧及靜態(tài)數(shù)據(jù)區(qū)詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • C++中臨時對象的常見產(chǎn)生情況及其解決的方案

    C++中臨時對象的常見產(chǎn)生情況及其解決的方案

    這篇文章主要是探討常見的臨時對象產(chǎn)生的情況,及其如何避免和解決這種臨時對象產(chǎn)生的方式。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++單例模式應用實例

    C++單例模式應用實例

    這篇文章主要介紹了C++單例模式應用實例,詳細講述了單例模式的原理與結構,及相關的打印機應用實例,需要的朋友可以參考下
    2014-10-10
  • 基于Matlab圖像處理的公路裂縫檢測實現(xiàn)

    基于Matlab圖像處理的公路裂縫檢測實現(xiàn)

    隨著公路的大量投運,公路日常養(yǎng)護和管理已經(jīng)成為制約公路運營水平提高的瓶頸,特別是路面狀態(tài)采集、檢測維護等工作更是對傳統(tǒng)的公路運維模式提出了挑戰(zhàn)。這篇文章主要介紹了如何通過Matlab圖像處理實現(xiàn)公路裂縫檢測,感興趣的可以了解一下
    2022-02-02
  • VC雙畫布消除屏幕閃爍實例詳解

    VC雙畫布消除屏幕閃爍實例詳解

    這篇文章主要介紹了VC雙畫布消除屏幕閃爍實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06

最新評論