做澳洲外貿(mào)的網(wǎng)站有哪些/港港網(wǎng)app下載最新版
- 前言:
- 在做OJ題或閱讀代碼時或多或少會遇到一些字符函數(shù)和字符串函數(shù),
如果不認(rèn)識或不熟悉就會造成不便,
本篇文章主要是為了這方面而存在,
此篇介紹各個字符串的功能與使用方法,
下一篇會講解如何模擬這些函數(shù)
重點(diǎn):
重點(diǎn)介紹處理字符和字符串的庫函數(shù)的使用和注意事項
一一一一一一一一分割線一一一一一一一一一
目錄
- 1.函數(shù)介紹:
- 1.1 strlen
- 1.2 strcpy
- 1.3 strcat
- 1.4 strcmp
- 2.庫函數(shù)的模擬實(shí)現(xiàn):
1.函數(shù)介紹:
1.1 strlen
我們可得這個函數(shù)是求在字符串開始與
'\0'
之間的字符串長度
代碼示例:
#include <stdio.h>
int main()
{const char* str1 = "abcdef";const char* str2 = "bbb";printf("%d\n", strlen(str1));printf("%d\n", strlen(str2));if (strlen(str2) - strlen(str1) > 0){printf("str2>str1\n");}else{printf("srt1>str2\n");}return 0;
}
結(jié)果:
解釋:
這里的6和3容易理解,那么str2>str1怎么解釋?
因為strlen返回值類型為size_t
類型,為無符號整形,
即相減的結(jié)果雖然為一個負(fù)數(shù),但負(fù)數(shù)的無符號整形顯然是巨大的正數(shù)
故大于
- 此函數(shù)的注意事項:
- 1.字符串以 ‘\0’ 作為結(jié)束標(biāo)志,strlen函數(shù)返回的是在字符串中 ‘\0’ 前面出現(xiàn)的字符個數(shù)(不包含 ‘\0’ )。
- 2.參數(shù)指向的字符串必須要以 ‘\0’ 結(jié)束。
- 3.注意函數(shù)的返回值為size_t,是無符號的( 易錯 )
一一一一一一一一分割線一一一一一一一一一
1.2 strcpy
我們可以知道此函數(shù)是為了拷貝字符串的
代碼示例:
#include<string.h>int main()
{char str1[20] = { 0 };char str2[] = "hello world";strcpy(str1, str2);printf("%s\n", str1);return 0;
}
結(jié)果:
- 此函數(shù)的注意事項:
- 1.源字符串必須以 ‘\0’ 結(jié)束。
- 2.會將源字符串中的 ‘\0’ 拷貝到目標(biāo)空間。
- 3.目標(biāo)空間必須足夠大,以確保能存放源字符串。
- 4.目標(biāo)空間必須可變。
一一一一一一一一分割線一一一一一一一一一
1.3 strcat
上邊兩個函數(shù)很容易就可以根據(jù)形式看出大概意思,
str代表字符串,那么cat代表什么?
他代表Catenate,連接的縮寫,也就是追加字符串的意思
代碼示例:
int main()
{char str1[20] = "abc";char str2[] = "dfg";strcat(str1, str2);printf("%s\n", str1);return 0;
}
結(jié)果:
- 此函數(shù)的注意事項:
- 1.源字符串必須以 ‘\0’ 結(jié)束。
- 2.目標(biāo)空間必須有足夠的大,能容納下源字符串的內(nèi)容。
- 3.目標(biāo)空間必須可修改。
- 4.不可以自己追加自己。
解釋:關(guān)鍵在于'\0'
,因為
一一一一一一一一分割線一一一一一一一一一
1.4 strcmp
我們可以得出此函數(shù)是為為比較字符串函數(shù)
代碼示例:
int main()
{char str1[] = "abb";char str2[] = "abc";int ret =strcmp(str1, str2);printf("%d\n", ret);return 0;
}
- 此函數(shù)的注意事項:
- 1.第一個字符串大于第二個字符串,則返回大于0的數(shù)字
- 2.第一個字符串等于第二個字符串,則返回0
- 3.第一個字符串小于第二個字符串,則返回小于0的數(shù)字
- 4.比較字符串是從頭開始逐一比較每個字符的ASCII碼值,相等就繼續(xù)向下比較,直到輸出
努力更新中。。。
2.庫函數(shù)的模擬實(shí)現(xiàn):
努力更新中。。。