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

實現(xiàn)C語言常用字符串庫函數(shù)

 更新時間:2021年11月17日 15:00:35   作者:尖兵果子  
這篇文章主要為大家介紹了如何實現(xiàn)C語言常用字符串庫函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

strlen

數(shù)組長度的計算是通過strlen來的,它的作用就是判斷給定的數(shù)組元素個數(shù),直到碰到\0結(jié)束

函數(shù)原型

size_t strlen ( const char * str );

廢話少說,直接上代碼

int my_strlen(char *str)
{
	char* ch=str;
	int count=0;
	while(*ch!='\0')
	{
		count++;
		ch++;
	}
	return count;
}

但考慮到安全性,因為求長度并不會改變源字符串,所以加上const修飾char,保證該字符串的內(nèi)容不能被修改,但是可以改變指向

int my_strlen(const char *str)
{
	char* ch=str;
	int count=0;
	while(*ch!='\0')
	{
		count++;
		ch++;
	}
	return count;
}

strcpy

strcpy是將一個字符串含\0整體拷貝到另一個字符串中

原型為

char * strcpy ( char * destination, const char * source );
void my_strcpy(char* dest,const char *src)
{
	char * ch=src;
	while(*ch!='\0')
	{
		*dest=*ch;
		dest++;
		ch++;
	}
	*dest='\0';
}

同理不改變原字符串,所以加上const修飾。在最后記得手動給目的字符串加上\0,這樣才能保證輸出正確

strcat

原型

char * strcat ( char * destination, const char * source );
void my_strcat(char* dest,const char *src)
{
	char * ch=dest;
	while(*ch!='\0')ch++;
	while(*src!='\0')
	{
		*ch=*src;
		ch++;
		src++;
	}
	*ch='\0';
}

先遍歷跑完目的字符串,接著再將原字符串所指的值一一賦給目的字符串.而因為是把原接在目的字符串后,所以目的字符串要足夠大

strcmp

原型

int strcmp ( const char * str1, const char * str2 );
int my_strcmp(const char* str1,const char *str2)
{
	assert(str1);
	assert(str2);
	char * s1=str1;
	char * s2=str2;
	while(*s1==*s2)
	{
		if(*s1=='\0')
		{
			return 0;
		}
		s1++;
		s2++;
	}
	if(*s1>*s2)
	{
		return 1;
	}
	else
	{
		return -1;
	}
}



上面代碼最后可以簡化為return *s1-*s2,不過主函數(shù)里要相應更改了

總結(jié)

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

相關文章

  • 深入解析C語言中的內(nèi)存分配相關問題

    深入解析C語言中的內(nèi)存分配相關問題

    這篇文章主要深入地介紹了C語言中的內(nèi)存分配,C語言編程中的內(nèi)存泄漏問題一直以來都是C編程中的一大棘手問題,本文從malloc和指針等方面對C內(nèi)存進行了深層次講解,強烈推薦!需要的朋友可以參考下
    2015-08-08
  • C++數(shù)據(jù)結(jié)構(gòu)模板進階的多方面分析

    C++數(shù)據(jù)結(jié)構(gòu)模板進階的多方面分析

    今天我要給大家介紹C++中的模板更深的一些知識。有關于非類型的模板參數(shù)和模板特化的一些知識,感興趣的朋友快來看看吧
    2022-02-02
  • C++入門概覽和嘗試創(chuàng)建第一個C++程序

    C++入門概覽和嘗試創(chuàng)建第一個C++程序

    這篇文章主要介紹了C++入門概覽和嘗試創(chuàng)建第一個C++程序,同時也包括編寫類的示例展示C++面向?qū)ο蟮奶匦?需要的朋友可以參考下
    2015-09-09
  • C語言 指針的初始化賦值案例詳解

    C語言 指針的初始化賦值案例詳解

    這篇文章主要介紹了C語言 指針的初始化賦值案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 淺析C++中前置聲明的應用與陷阱

    淺析C++中前置聲明的應用與陷阱

    以下是對C++中前置聲明的應用與陷阱進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • C++實現(xiàn)哈夫曼編碼

    C++實現(xiàn)哈夫曼編碼

    這篇文章主要為大家詳細介紹了C++實現(xiàn)哈夫曼編碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C語言中遞歸的實際應用與經(jīng)典問題

    C語言中遞歸的實際應用與經(jīng)典問題

    函數(shù)以及函數(shù)的遞歸調(diào)用是學習C語言必須要掌握的內(nèi)容,且遞歸作為經(jīng)典的算法思想被廣泛應用于程序設計中,下面這篇文章主要給大家介紹了關于C語言中遞歸的實際應用與經(jīng)典問題的相關資料,需要的朋友可以參考下
    2021-09-09
  • C++詳解多線程中的線程同步與互斥量

    C++詳解多線程中的線程同步與互斥量

    線程間如何通信同步?一些伙伴好奇線程間的通信及同步方法,沒關系,下面小編就繼續(xù)給大家科普下線程間通信及同步的方法以及互斥量
    2022-05-05
  • ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式

    ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式

    這篇文章主要介紹了ubuntu系統(tǒng)vscodeC++編譯環(huán)境配置與使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • M1 Macbook vscode C++ debug調(diào)試實現(xiàn)

    M1 Macbook vscode C++ debug調(diào)試實現(xiàn)

    本文主要介紹了M1 Macbook vscode C++ debug調(diào)試,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論