C語言中“不受限制”的字符串函數總結

“不受限制的“字符串函數

按《C和指針》中所說,那些常用的字符串函數都是“不是限制的”,就是說它們隻能通過尋找字符串末尾的NULL來判斷字符串的長度。

strlen

strlen函數用於求解字符串長度,其返回類型為unsigned int(即size_t)。strlen函數從起點開始,往後計數,遇到‘\0’停止。
值得註意的是:strlen函數的返回類型。看如下代碼:

#include<string.h>
#include<iostream>
using namespace std;

int main()
{
	if ((strlen("abc") - strlen("abcdef")) > 0)
		cout << "大於" << endl;
	else
		cout << "小於" << endl;

	return 0;
}

輸出 : 大於。不必驚奇,函數的size_t(-3)是一個正數。

strcpy

strcpy函數是字符串拷貝函數

函數原型為:

需要註意:目標字符串是要可以更改的,空間要大,足夠存放拷貝的源字符串。

拷貝過程中,函數將源字符串的‘\0’一起拷貝到目標中。

#include<string>
#include<iostream>
using namespace std;
int main()
{
	char arr[20] = "abcdefgh******";
	char* p = "hello world";
	strcpy(arr, p);
	cout << arr << endl;
	return 0;
}

strcmp

strcmp函數為字符串比較函數。比較的不是字符串的長度,而是對應字符的ASCII值。

返回類型為:

#include<string>
#include<iostream>
using namespace std;
int main()
{
	char arr[] = "abcde";
	char p[] = "abde";
	cout << strcmp(arr,p) << endl;

	return 0;
}

strcat

strcat函數為字符串追加函數。函數原型:

將源字符串追加到目標字符串上。

int main()
{
	char arr[20] = "abcde ";
	char p[] = "hello";
	cout << strcat(arr, p) << endl;

	return 0;
}

strstr

strstr為字符串查找函數。函數原型為:

在目標字符串中查找子字符串,找的則返回指向子字符串的指針,否則返回空指針。

int main()
{
	char arr[] = "hello, how are you ?";
	char p[] = "are";
	cout << strstr(arr, p) << endl;

	return 0;
}

結果為:are you ?

strtok

strtok函數為字符串分隔函數。函數原型為:

strDelimit為字符串,定義瞭分隔字符的集合。函數執行是遇到分割字符時,將它改為‘\0’,范圍一個指向這個標記的指針。註意:strtok函數執行時修改瞭字符串的內容。

int main()
{
	char str[] = "hello,how are you ?";
	char * p;
	p = strtok(str, ",?");
	while (p != NULL)
	{
		printf("%s\n", p);
		p = strtok(NULL, ",?");
	}
	return 0;
}

strerror

strerror函數的作用:返回錯誤碼對應的信息。函數原型為

使用時要包含#include<errno.h>

小結

這些“不受限制的”的字符串函數,在執行過程中,函數本身要尋找字符串結尾的’\0’來作為結束執行標志。如果找不到’\0’,這函數執行可能就會越界,得不到正確的結果。

到此這篇關於C語言中“不受限制”的字符串函數的文章就介紹到這瞭,更多相關C語言不受限制字符串函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: