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

C語言字符函數(shù)與字符串函數(shù)詳解

 更新時間:2021年09月16日 15:59:59   作者:再吃一個橘子  
這篇文章主要給大家介紹了關(guān)于C語言字符/字符串的相關(guān)函數(shù),文中通過示例代碼總結(jié)的非常詳細,對大家學習或者使用C語言具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

本章重點

重點介紹處理字符和字符串的庫函數(shù)的使用和注意事項

1.求字符串長度 strlen

2.長度不受限制的字符串函數(shù) strcpy ,strcat, strcmp

3.長度受限制的字符串函數(shù) strncpy,strncat ,strncmp

4.字符串查找 strstr,strtok

5.錯誤信息報告 strerror

6.字符操作

7.內(nèi)存操作函數(shù) memcpy,memmove,memset ,memcmp

前言

C語言中對字符和字符串的處理很是頻繁,但是C語言本身是沒有字符串類型的,字符串通常放在 常量字符串 中或者 字符數(shù)組 中。 字符串常量 適用于那些對它不做修改的字符串函數(shù)。

1.strlen函數(shù)

size_t strlen ( const char * str );

  • 字符串已經(jīng) '\0' 作為結(jié)束標志,strlen函數(shù)返回的是在字符串中 '\0' 前面出現(xiàn)的字符個數(shù)(不包含 '\0' )。
  • 參數(shù)指向的字符串必須要以 '\0' 結(jié)束。
  • 注意函數(shù)的返回值為size_t,是無符號的( 易錯 )
  • 學會strlen函數(shù)的模擬實現(xiàn) (計數(shù)器、指針-指針、遞歸)

講解:

注意點1

有的編譯器可能用int來接收strlen函數(shù)的返回值會報錯,因為strlen函數(shù)返回值是size_t( unsigned int 無符號整型 )

	char arr[] = "abcdef";
	//錯誤示范
	int sz1 = strlen(arr);
	//正確示范
	size_t sz = strlen(arr);

注意點2

注意函數(shù)的返回值為size_t,是無符號的( 易錯 )

//3 - 8 < 0?
//strlen函數(shù)是size_t類型,是無符號的,必定大于0?。?!
int main()
{
	if (strlen("abc") - strlen("abcdefgh") > 0)
	{
		printf("哈哈哈~~");
	}
	else
		printf("吼吼吼!");
	return 0;
}
//運行結(jié)果是   哈哈哈~~

對比代碼:

int main()
{
	if ((int)strlen("abc") - (int)strlen("abcdefgh") > 0)
	{
		printf("哈哈哈~~");
	}
	else
		printf("吼吼吼!");
	return 0;
}
//運行結(jié)果是   吼吼吼!

2.strcpy

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

  • 源字符串必須以 '\0' 結(jié)束。
  • 會將源字符串中的 '\0' 拷貝到目標空間。
  • 目標空間必須足夠大,以確保能存放源字符串。
  • 目標空間必須可變。( 即:不能是不可修改的常量字符串 )
  • 學會模擬實現(xiàn)。

講解:

注意點1:

我們發(fā)現(xiàn),copy時,將源字符串毫無保留的( 包括末尾的 '\0' )一塊copy到目標字符串中??!

注意點2:

如果源字符串中間本身就含有'\0',那么我們同樣還是取到遇見的第一個‘\0' ,不會繼續(xù)往后打印的?。?!

注意點3:

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

	//錯誤示范
	//目標字符串空間太少
	char arr1[] = "xxx";
	char arr2[] = "hello\0abc";
	strcpy(arr1, arr2);

注意點4:

目標空間必須可變。

模擬strcpy函數(shù)

代碼1:

#include<stdio.h>
#include<assert.h>
void* my_strcpy(char* dest, const char* src)
{
	assert(dest && src);
	char* ret = dest;
	while (*src)
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = '\0';
}
int main()
{
	char arr1[] = "xxxxxxxxxxxxxxxx";
	char arr2[] = "abc";
	my_strcpy(arr1, arr2);
	printf("%s", arr1);
	return 0;
}

代碼2:(升級版~~)

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* src)
{
	assert(dest && src);
	char* ret = dest;
	while (*dest++ = *src++)
	{
		;
	}
	return ret;
}
int main()
{
	char arr1[] = "xxxxxxxxxxxxxxxx";
	char arr2[] = "abc";
	printf("%s", my_strcpy(arr1, arr2));
	return 0;
}

總結(jié)

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

相關(guān)文章

  • C++對數(shù)組的引用實例分析

    C++對數(shù)組的引用實例分析

    這篇文章主要介紹了C++對數(shù)組的引用實例分析,需要的朋友可以參考下
    2014-08-08
  • C++利用隨機策略實現(xiàn)優(yōu)化二叉樹操作效率

    C++利用隨機策略實現(xiàn)優(yōu)化二叉樹操作效率

    這篇文章中我們主要來詳細探討隨機化二叉搜索樹的基本思想、實現(xiàn)方法,以及如何在C++中應用這些策略來優(yōu)化我們的數(shù)據(jù)結(jié)構(gòu),感興趣的可以了解下
    2024-02-02
  • C++虛函數(shù)表實例分析

    C++虛函數(shù)表實例分析

    這篇文章主要介紹了C++虛函數(shù)表,對多態(tài)中用到的虛函數(shù)表進行了比較通俗的實例分析,需要的朋友可以參考下
    2014-09-09
  • C語言實現(xiàn)貪吃蛇小游戲開發(fā)

    C語言實現(xiàn)貪吃蛇小游戲開發(fā)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)貪吃蛇小游戲開發(fā),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++ Boost Uuid超詳細講解

    C++ Boost Uuid超詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-12-12
  • C++雙目運算符+=的重載詳解

    C++雙目運算符+=的重載詳解

    這篇文章主要介紹了詳解C++編程中的雙目運算符重載,是C++入門學習中的基礎(chǔ)知識,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • C/C++如何獲取當前系統(tǒng)時間的實例詳解

    C/C++如何獲取當前系統(tǒng)時間的實例詳解

    這篇文章主要介紹了 C/C++如何獲取當前系統(tǒng)時間的實例詳解的相關(guān)資料,這里提供了幾種實現(xiàn)方法,幫助大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • C語言中的sizeof操作符用法及和strlen的區(qū)別

    C語言中的sizeof操作符用法及和strlen的區(qū)別

    這篇文章主要介紹了C語言中的sizeof操作符用法及和strlen的區(qū)別,本文講解了sizeof的定義、sizeof的語法以及使用實例,最后給出sizeof與strlen的區(qū)別,需要的朋友可以參考下
    2015-07-07
  • C++中數(shù)組作為函數(shù)參數(shù)傳入的幾種方式代碼示例

    C++中數(shù)組作為函數(shù)參數(shù)傳入的幾種方式代碼示例

    數(shù)組元素和數(shù)組名都可以作為函數(shù)的參數(shù)以實現(xiàn)函數(shù)間數(shù)據(jù)的傳遞和共享,下面這篇文章主要給大家介紹了關(guān)于C++中數(shù)組作為函數(shù)參數(shù)傳入的幾種方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • C++實現(xiàn)連連看消除算法

    C++實現(xiàn)連連看消除算法

    這篇文章主要為大家詳細介紹了C++實現(xiàn)連連看消除算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論