C語言中計算字符串長度與分割字符串的方法
C語言strlen()函數(shù):返回字符串的長度
頭文件:
#include <string.h>
strlen()函數(shù)用來計算字符串的長度,其原型為:
unsigned int strlen (char *s);
【參數(shù)說明】s為指定的字符串。
strlen()用來計算指定的字符串s 的長度,不包括結(jié)束字符"\0"。
【返回值】返回字符串s 的字符數(shù)。
注意一下字符數(shù)組,例如
char str[100] = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";
定義了一個大小為100的字符數(shù)組,但是僅有開始的11個字符被初始化了,剩下的都是0,所以 sizeof(str) 等于100,strlen(str) 等于11。
如果字符的個數(shù)等于字符數(shù)組的大小,那么strlen()的返回值就無法確定了,例如
char str[6] = "abcxyz";
strlen(str)的返回值將是不確定的。因為str的結(jié)尾不是0,strlen()會繼續(xù)向后檢索,直到遇到'\0',而這些區(qū)域的內(nèi)容是不確定的。
注意:strlen() 函數(shù)計算的是字符串的實際長度,遇到第一個'\0'結(jié)束。如果你只定義沒有給它賦初值,這個結(jié)果是不定的,它會從首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是變量聲明后所占的內(nèi)存數(shù),不是實際長度,此外sizeof不是函數(shù),僅僅是一個操作符,strlen()是函數(shù)。
【函數(shù)示例】取得字符串 的長度。
#include<stdio.h> #include<string.h> int main() { char *str1 = "http://see.xidian.edu.cn/cpp/u/shipin/"; char str2[100] = "http://see.xidian.edu.cn/cpp/u/shipin_liming/"; char str3[5] = "12345"; printf("strlen(str1)=%d, sizeof(str1)=%d\n", strlen(str1), sizeof(str1)); printf("strlen(str2)=%d, sizeof(str2)=%d\n", strlen(str2), sizeof(str2)); printf("strlen(str3)=%d, sizeof(str3)=%d\n", strlen(str3), sizeof(str3)); return 0; }
運行結(jié)果:
strlen(str1)=38, sizeof(str1)=4 strlen(str1)=45, sizeof(str1)=100 strlen(str1)=53, sizeof(str1)=5
上面的運行結(jié)果,strlen(str1)=53顯然不對,53是沒有意義的。
C語言strtok()函數(shù):字符串分割
頭文件:
#include <string.h>
定義函數(shù):
char * strtok(char *s, const char *delim);
函數(shù)說明:strtok()用來將字符串分割成一個個片段。參數(shù)s 指向欲分割的字符串,參數(shù)delim 則為分割字符串,當strtok()在參數(shù)s 的字符串中發(fā)現(xiàn)到參數(shù)delim 的分割字符時則會將該字符改為\0 字符。在第一次調(diào)用時,strtok()必需給予參數(shù)s 字符串,往后的調(diào)用則將參數(shù)s 設(shè)置成NULL。每次調(diào)用成功則返回下一個分割后的字符串指針。
返回值:返回下一個分割后的字符串指針,如果已無從分割則返回NULL。
范例
#include <string.h> main(){ char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z"; char *delim = "-: "; char *p; printf("%s ", strtok(s, delim)); while((p = strtok(NULL, delim))) printf("%s ", p); printf("\n"); }
執(zhí)行結(jié)果:
ab cd ef;gh i jkl;mnop;qrs tu vwx y;z //-與:字符已經(jīng)被\0 字符取代
上一篇:C語言中對字母進行大小寫轉(zhuǎn)換的簡單方法
欄 目:C語言
下一篇:詳解C語言中index()函數(shù)和rindex()函數(shù)的用法
本文標題:C語言中計算字符串長度與分割字符串的方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2858.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實例總結(jié)
- 08-05DEDE織夢data目錄下的sessions文件夾有什