最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言常用庫函數(shù)的使用及模擬實現(xiàn)詳解例舉

 更新時間:2022年04月13日 09:09:08   作者:小劉好好學習  
C語言庫函數(shù)是把自定義函數(shù)放到庫里,是別人把一些常用到的函數(shù)編完放到一個文件里,供程序員使用,下面讓我們一起來詳細了解它

經(jīng)歷了C語言基礎篇的學習,讓我們來簡單了解幾個C語言的庫函數(shù)!

1.strlen

字符串已經(jīng) '\0' 作為結(jié)束標志,strlen函數(shù)返回的是在字符串中 '\0' 前面出現(xiàn)的字符個數(shù)(不包 含 '\0' )。

 函數(shù)的模擬實現(xiàn)

1.計數(shù)法

int my_strlen(dest)
{
int count=0;
    while(dest)//當dest等于'\0'時停止循環(huán)
{
    count++;
    dest++;
}
return count;
}

2.遞歸法

int my_strlen(char* dest)
{
    int count=0;
    if(*dest!='0')
    {
        dest++;
        count++;
        return my_strlen(dest,count)
    }
    else
    return count;
}

3.指針減指針

int my_strlen(char* dest)
{
    char* arr=dest;//定義一個新指針指向dest
    while(*arr)//直到arr指向'\0'
    {
    arr++;
    }
    return (arr)-(dest);//指針相減代表兩個指針之間的元素個數(shù)
}

2.strcpy

char* strcpy ( char * destination , const char * source )

會將源字符串中的 '\0' 拷貝到目標空間。

目標空間必須足夠大,并且可變以確保能存放源字符串。

 函數(shù)的模擬實現(xiàn)

char* my_strcpy(char* dest, const char* str)
{
	char* arr1 = dest;
	while ((*dest++ = *str++)!='\0')
	{
		;
	}
	return arr1;
}
int main()
{
	char arr1[] = "***************";
	char arr2[] = "hello word";
	my_strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}

3.strcmp

int strcmp ( const char * str1, const char * str2 );

第一個字符串大于第二個字符串,則返回大于0的數(shù)字

第一個字符串等于第二個字符串,則返回0

第一個字符串小于第二個字符串,則返回小于0的數(shù)字

函數(shù)的模擬實現(xiàn)

int my_strcmp(char* arr1,char* arr2)
{
	while(*arr1 == *arr2)
	{
		if (*arr1 == '\0' && *arr2 == '\0')
		{
			return 0;
		}
		else
		{
			arr1++; arr2++;
 
		}
	}if (*arr1 > *arr2)
	{
		return 1;
	}
	else if (*arr1 < *arr2)
	{
 
		return -1;
	}
}

4.strcat

char * strcat ( char * destination, const char * source );

函數(shù)的模擬實現(xiàn)

char* my_strcat(char* dest, char* str)
{
	char* ret = dest;
	while (*dest)
	{
		dest++;
	}
	while (*dest++=*str++)
	{
		;
	}
	return ret;
}
int main()
{
	char arr1[50] = "hello";
	char arr2[] = "word";
	char* count=my_strcat(arr1, arr2);
	printf("%s", count);
	return 0;
}

5.strstr

char * strstr ( const char *str1, const char * str2);

函數(shù)的模擬實現(xiàn)

char* my_strstr(char* dest, char* str)
{
	char* arr1 = str;
	char* cur = dest;
	while (*cur)
	{
		str = arr1;
		dest = cur;
		if (*dest != *str)
		{
			dest++;
			str++;
		}
		else if (*dest == *str)
		{
			while (*dest == *str)
			{
				dest++; str++;
 
			}if (*str == '\0')
			{
				return cur;
			}
		}
		cur++;
	}return NULL;
}
int main()
{
	char arr1[] = "abbbcdef";
	char arr2[] = "bbc";
	char* ret=my_strstr(arr1, arr2);
	if (NULL == ret)
	{
		printf("找不到子串\n");
	}
	else
	{
		printf("%s\n", ret);
	}
	return 0;
}

6.strtok

char * strtok ( char * str, const char * sep );

strtok函數(shù)的第一個參數(shù)不為 NULL ,函數(shù)將找到str中第一個標記,strtok函數(shù)將保存它在字符串中的位置。

strtok函數(shù)的第一個參數(shù)為 NULL ,函數(shù)將在同一個字符串中被保存的位置開始,查找下一個標記

int main()
{
	char buff[] = "www.aaabbbccc@qq.com";
	char buf[20] = { 0 };
	strcpy(buf, buff);
	char* sep=".@";
	char* str = NULL;
	for (str = strtok(buf, sep); str != NULL; str = strtok(NULL, sep))
			{//NULL是從保存好的位置開始往后找
				printf("%s\n", str);
			}
	return 0;
}

7.字符分類函數(shù)

iscntrl 任何控制字符
isspace空白字符:空格‘ ’,換頁‘\f’,換行'\n',回車‘\r’,制表符'\t'或者垂直制表符'\v'
isdigit十進制數(shù)字 0~9
isxdigit十六進制數(shù)字,包括所有十進制數(shù)字,小寫字母a~f,大寫字母A~F
islower小寫字母a~z
isupper大寫字母A~Z
isalpha字母a~zA~Z
isalnum字母或者數(shù)字,a~z,A~Z,0~9
ispunct 標點符號,任何不屬于數(shù)字或者字母的圖形字符(可打印)
isgraph
任何圖形字符
isprint任何可打印字符,包括圖形字符和空白字符

8.memcpy&memmove

void * memcpy ( void * destination , const void * source , size_t num )

函數(shù)模擬實現(xiàn) 

void* my_memmove(void* dest,void* str , size_t count)
{
	void* ch = dest;
	if (dest > str)
	{
		while (count--)
		{
			*((char*)dest + count) = *((char*)str + count);
		}
	}
	else
	{
		while (count--)
		{
			*(char*)dest = *(char*)str;
			dest=(char*)dest+1;
			str=(char*)str+1;
		}
	}
}
int main()
{
	int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
	my_memmove(arr1+2, arr1 , 20);
	int sz = sizeof(arr1) / sizeof(arr1[0]);
	for (int i = 0; i < sz; i++)
	{
		printf("%d", arr1[i]);
	}
	return 0;
}

9.memcmp 

int memcmp ( const void * ptr1 , const void * ptr2 , size_t num );

 函數(shù)模擬實現(xiàn)

void* my_memcmp(char* arr, char* arr1, int count)
{
	while (count--)
	{
		if (*(char*)arr > *(char*)arr1)
		{
			return 1;
		}
		else if ((*(char*)arr < *(char*)arr1))
		{
			return -1;
		}
		arr++; arr1++;
	}	return 0;
}
int main()
{
	int arr[] = { 1,2,3,4,5 };
	int arr1[] = { 1,2,3,4,4 };
	int ret=my_memcmp(arr, arr1, 20);
	printf("%d", ret);
	return 0;
}

到此這篇關(guān)于C語言常用庫函數(shù)的使用及模擬實現(xiàn)詳解例舉的文章就介紹到這了,更多相關(guān)C語言 庫函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于VS2019配置opencv4.0的方法步驟

    基于VS2019配置opencv4.0的方法步驟

    這篇文章主要介紹了基于VS2019配置opencv4.0的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 使用QPainter畫一個3D正方體

    使用QPainter畫一個3D正方體

    這篇文章主要為大家詳細介紹了使用QPainter畫一個3D正方體,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語言大小端模式、判斷大小端、大小端轉(zhuǎn)換方法詳解

    C語言大小端模式、判斷大小端、大小端轉(zhuǎn)換方法詳解

    這篇文章主要介紹了C語言大小端模式、判斷大小端、大小端轉(zhuǎn)換的相關(guān)資料,大端和小端是數(shù)據(jù)在內(nèi)存中的存儲方式,大端模式下高字節(jié)存于低地址,小端模式則相反,大小端問題由數(shù)據(jù)類型多字節(jié)存儲引起,不同選擇形成不同存儲模式,需要的朋友可以參考下
    2024-10-10
  • C++ Primer注解之引用和指針

    C++ Primer注解之引用和指針

    這篇文章主要介紹了C++ Primer注解之引用和指針的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 關(guān)于C++中引用和指針的區(qū)別詳解

    關(guān)于C++中引用和指針的區(qū)別詳解

    這篇文章主要介紹了關(guān)于C++中引用和指針的區(qū)別詳解,
    2023-07-07
  • C++無鎖隊列的原理與實現(xiàn)示例

    C++無鎖隊列的原理與實現(xiàn)示例

    C++無鎖隊列是一種多線程編程技術(shù),它可以在不使用鎖的情況下實現(xiàn)線程安全的隊列,本文就來詳細的介紹一下C++無鎖隊列的原理與實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • C++中關(guān)于set刪除的一些坑

    C++中關(guān)于set刪除的一些坑

    這篇文章主要介紹了C++中關(guān)于set刪除的一些坑,因為這個問題浪費了很多的時間,所以想著分享出來給大家,方便同樣遇到這個問題的朋友們,有需要的朋友們下面來一起看看吧。
    2017-02-02
  • 關(guān)于CLion配置visual?studio(msvc)和JOM多核編譯的問題

    關(guān)于CLion配置visual?studio(msvc)和JOM多核編譯的問題

    這篇文章主要介紹了CLion配置visual?studio(msvc)和JOM多核編譯,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C語言實踐設計開發(fā)飛機游戲

    C語言實踐設計開發(fā)飛機游戲

    飛機大戰(zhàn)想必是很多人童年時期的經(jīng)典游戲,我們依舊能記得抱個老人機娛樂的場景,下面這篇文章主要給大家介紹了關(guān)于如何利用C語言寫一個簡單的飛機大戰(zhàn)小游戲的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • C++詳細講解內(nèi)存管理工具primitives

    C++詳細講解內(nèi)存管理工具primitives

    文章向大家介紹C++內(nèi)存管理primitives,主要包括primitives使用實例、應用技巧、基本知識點總結(jié)和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下
    2022-06-06

最新評論

精河县| 育儿| 衡南县| 黑龙江省| 孟村| 五华县| 广南县| 贵德县| 隆德县| 察隅县| 新晃| 蒙城县| 朔州市| 永泰县| 富宁县| 泽普县| 金塔县| 明星| 五大连池市| 梁山县| 厦门市| 平武县| 肥城市| 隆子县| 济南市| 西宁市| 石首市| 太仆寺旗| 伊川县| 高雄市| 石城县| 察隅县| 苗栗市| 汝阳县| 隆昌县| 衡水市| 钟祥市| 广东省| 灵山县| 建湖县| 维西|