首先要明白,sizeof不是函數(shù),而是操作符;strlen是函數(shù)。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供裕民企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、HTML5建站、小程序制作等業(yè)務(wù)。10年已為裕民眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
操作符sizeof用來判斷對象、類型所占用的內(nèi)存空間的字節(jié)數(shù),strlen是計算一個字符串以字節(jié)計的長度。如:sizeof(int)、sizeof(double)、sizeof(char)等是合法的,可以計算出int、double、char這些類型所占用的字節(jié)數(shù)分別是4、8、1,而用strlen則是非法的。再如:若有char
a[20]="123";,那么,strlen(a)的結(jié)果是3,而sizeof(a)的結(jié)果是20;前者是字符串“123”的長度,后者是為數(shù)組a分配的內(nèi)存空間。還有:當(dāng)計算一個指向字符串的指針時,sizeof得到的是指針本身的長度即固定為4(32位機),而strlen得到的是指針指向的字符串的長度。如:char
a[20]="1234567",*p=a;,則,sizeof(p)=4,而strlen(p)=7。似乎復(fù)雜了點。記住一個原則就好判斷:操作符sizeof用來計算系統(tǒng)為對象本身分配的空間(以字節(jié)計),函數(shù)strlen用來計算字符串的長度(以字節(jié)計)。
字符串的函數(shù)很多,有輸入/輸出函數(shù):gets()/puts(),有拷貝函數(shù)strcpy(),字符串連接函數(shù):strcat(),字符串比較函數(shù)strcmp(),測長度函數(shù):strlen(),大小寫轉(zhuǎn)換:strlwr()/strupr()等等,如果調(diào)用的話,都要在頭文件加預(yù)處理命令:
#include
“string.h”。
1.puts(字符數(shù)組) 輸出
2.gets(字符數(shù)組) 輸入
3.strcat(字符數(shù)組1,字符數(shù)組2) 字符串2接到字符串1的后面
4.strcpy和strncpy(字符數(shù)組1,字符串2,m) 將字符串2的前m個字符拷到str1中,最后加'\0'
5.strcmp(字符串1,字符串2) 兩字符串比較
6.strlen(字符數(shù)組) 字符串的實際長度(不包括'\0')
復(fù)制相關(guān)函數(shù):memcpy、memmove、strcpy、strncpy
字符串連接函數(shù):strcat、strncat
字符串比較函數(shù):memcmp、strcmp、strcoll、strncmp、strxfrm、
查找函數(shù):memchr、strchr、strcspn、strpbrk、strrchr、strspn、strstr、strtok
其他相關(guān)函數(shù):memset、strerror、strlen