字符串是一種非常重要的數(shù)據(jù)類型,但是C語(yǔ)言不存在顯式的字符串類型,C語(yǔ)言中的字符串都以字符串常量的形式出現(xiàn)或存儲(chǔ)在字符數(shù)組中。同時(shí),C 語(yǔ)言提供了一系列庫(kù)函數(shù)來(lái)對(duì)操作字符串,這些庫(kù)函數(shù)都包含在頭文件 string.h 中。 一、字符串常量和字符數(shù)組 1.1、什么是字符串常量 C 語(yǔ)言雖然沒(méi)有字符串類型,但是 C語(yǔ)言提是存在字符串這個(gè)概念的,也就是字符串常量:以 NUL 字節(jié)結(jié)尾的 0 個(gè)或多個(gè)字符組成的序列。字符串常量是不可被修改的,一般用一對(duì)雙引號(hào)(" ")括起的一串字符來(lái)表示字符串常量,如: "Hello!"、"\aWarning!\a"、"123abc\n"、"" 字符串常量可以為空,如""就是一個(gè)空的字符串常量,但是即使為空,還是存在一個(gè)終止符 NUL 的。(在 C 語(yǔ)言中,常用轉(zhuǎn)義字符 \0 來(lái)表示 NUL) 1.2、字符串常量與指針 字符串常量與指針關(guān)系密切,因?yàn)樽址A康闹担瑢?shí)際上表示的是存儲(chǔ)這些字符的內(nèi)存空間的地址,更準(zhǔn)確地說(shuō)是字符串常量中第 1 個(gè)字符的地址,而不是這些字符本身。因此,在 C 語(yǔ)言中是不能直接進(jìn)行字符串賦值的(因?yàn)闆](méi)有字符串類型嘛)。在 C 語(yǔ)言中,常通過(guò)聲明一個(gè)指向 char 類型的指針并將其初始化為一個(gè)字符串常量的方式來(lái)訪問(wèn)一個(gè)字符串: char *message = "Hello World!"; // 上面的語(yǔ)句也可以拆分成下面兩句 char *message; message = "Hello World!";// 這句話看起來(lái)像是字符串復(fù)制,其實(shí)不是,只是涉及到指針操作 上述語(yǔ)句聲明了一個(gè)指向 char 類型的指針,并用字符串常量中第 1 個(gè)字符的地址對(duì)該指針進(jìn)行初始化。可以通過(guò)字符指針 message 來(lái)訪問(wèn)字符串常量: #include stdio.h int main() { char *message = "Hello World!"; printf("%s\n",message); while(*message != '\0'){ printf("%c ",*message++); } printf("\n"); return 0; } /* output: * Hello World! * H e l l o W o r l d ! */ 這段代碼,使用字符指針遍歷了字符串常量中的每一個(gè)字符。 1.3、字符數(shù)組 用于存放字符的數(shù)組稱為字符數(shù)組。在 C 語(yǔ)言中,除了字符串常量外,其他所有字符串都必須存儲(chǔ)于字符數(shù)組或動(dòng)態(tài)分配的內(nèi)存中。定義一個(gè)字符數(shù)組和定義一個(gè)普通數(shù)組一樣,不同的是字符數(shù)組中存放的是字符數(shù)據(jù)而已: char charArray[] = {'H','e','l','l','o'}; // 聲明并初始化一個(gè)字符數(shù)組 這句話定義并初始化了一個(gè)字符數(shù)組 charArray。這個(gè)數(shù)組的長(zhǎng)度實(shí)際上為 6 ,因?yàn)闀?huì)自動(dòng)添加一個(gè)字符串結(jié)束符 '\0'。 C 語(yǔ)言提供了一種更簡(jiǎn)潔的方法來(lái)對(duì)字符數(shù)組進(jìn)行初始化: char charArray[] = "Hello World!"; // 聲明并初始化一個(gè)字符數(shù)組 上述兩種聲明方式等價(jià)。 可以對(duì)一個(gè)字符數(shù)組做出修改: #include stdio.h #include string.h int main() { char str[] = "hello world!"; int len = strlen(str); int i; for(i = 0; i len; i++){ if( str[i] = 'z' str[i] = 'a'){ str[i] = str[i] - 32; } } printf("%s\n",str); } 這段代碼可以將字符數(shù)組中的小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母后輸出。 1.4、 字符串常量與字符數(shù)組的區(qū)別 1)字符串常量是一個(gè)字符數(shù)組,但是內(nèi)容和長(zhǎng)度在初始化時(shí)就已經(jīng)固定了,不可更改;可以通過(guò)一個(gè)指向字符串常量第一個(gè)元素的指針來(lái)訪問(wèn)該字符串常量; 2)字符數(shù)組是一個(gè)用于存放字符的數(shù)組,字符數(shù)組的值是可以更改的。 二、獲取字符串長(zhǎng)度 字符串的長(zhǎng)度就是這個(gè)字符串所包含字符的個(gè)數(shù),但是這個(gè)長(zhǎng)度是不包含 NUL 字符的。C 語(yǔ)言中使用庫(kù)函數(shù) strlen 來(lái)計(jì)算字符串長(zhǎng)度: size_t strlen(char const *string); 需要注意的是 strlen 的返回值類型:size_t 類型,這是一個(gè)無(wú)符號(hào)整數(shù)類型。
在鼎城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都營(yíng)銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,鼎城網(wǎng)站建設(shè)費(fèi)用合理。
C語(yǔ)言中函數(shù)的標(biāo)志,就是標(biāo)識(shí)符后,緊跟著一對(duì)圓括號(hào)。其中可以有參數(shù),也可以沒(méi)有。
*------------------------------*/
abs(計(jì)算整型數(shù)的絕對(duì)值)
相關(guān)函數(shù) labs, fabs
表頭文件 #includestdlib.h
定義函數(shù) int abs (int j)
函數(shù)說(shuō)明 abs()用來(lái)計(jì)算參數(shù)j的絕對(duì)值,然后將結(jié)果返回。
返回值 返回參數(shù)j的絕對(duì)值結(jié)果。
范例 #ingclude stdlib.h
main(){
int ansert;
answer = abs(-12);
printf("|-12| = %d\n", answer);
}
執(zhí)行 |-12| = 12
/*---------------------------------*/
exp(計(jì)算指數(shù))
相關(guān)函數(shù) log,log10,pow
表頭文件 #includemath.h
定義函數(shù) double exp(double x);
函數(shù)說(shuō)明 exp()用來(lái)計(jì)算以e為底的x次方值,即ex值,然后將結(jié)果返回。
返回值 返回e的x次方計(jì)算結(jié)果。
附加說(shuō)明 使用GCC編譯時(shí)請(qǐng)加入-lm。
范例 #includemath.h
main()
{
double answer;
answer = exp (10);
printf("e^10 =%f\n", answer);
}
執(zhí)行 e^10 = 22026.465795
/*-----------------------------------*/
sqrt(計(jì)算平方根值)
相關(guān)函數(shù) hypotq
表頭文件 #includemath.h
定義函數(shù) double sqrt(double x);
函數(shù)說(shuō)明 sqrt()用來(lái)計(jì)算參數(shù)x的平方根,然后將結(jié)果返回。參數(shù)x必須為正數(shù)。
返回值 返回參數(shù)x的平方根值。
錯(cuò)誤代碼 EDOM 參數(shù)x為負(fù)數(shù)。
附加說(shuō)明 使用GCC編譯時(shí)請(qǐng)加入-lm。
范例 /* 計(jì)算200的平方根值*/
#includemath.h
main()
{
double root;
root = sqrt (200);
printf("answer is %f\n",root);
}
執(zhí)行 answer is 14.142136
/*--------------------------------*/
fabs(計(jì)算浮點(diǎn)型數(shù)的絕對(duì)值)
相關(guān)函數(shù):abs
表頭文件:#includemath.h
定義函數(shù):double fabs(double x);
函數(shù)說(shuō)明:fabs()用來(lái)計(jì)算浮點(diǎn)型數(shù)x的絕對(duì)值,然后將結(jié)果返回。
返回值:返回參數(shù)x的絕對(duì)值計(jì)算結(jié)果
#include math.h
main()
{
double answer;
answer=fabs(-3.141592);
printf("|-3.141592|=%f\n",answer);
}
執(zhí)行結(jié)果
|-3.141592|=3.141592
abs() 求絕對(duì)值
acos() 求反余弦
asin() 求反正弦
atan() 求反正切
atan2() 求反正切,按符號(hào)判定象限
ceil() 求不小于某值的最小整數(shù)(求上界)
cos() 求余弦
cosh() 求雙曲余弦
div() 求商和余數(shù)
exp() 求e的冪
fabs() 求浮點(diǎn)數(shù)的絕對(duì)值
floor() 求不大于某值的最大整數(shù)(求下界)
fmod() 求模數(shù)
frexp() 求數(shù)的科學(xué)表示法形式
labs() 求長(zhǎng)整型數(shù)的絕對(duì)值
ldexp() 以科學(xué)計(jì)數(shù)法計(jì)算
ldiv() 以長(zhǎng)整型返回商和余數(shù)
log() 自然對(duì)數(shù)
log10() 以10為底的自然對(duì)數(shù)
modf() 將一個(gè)數(shù)分解成整數(shù)和小數(shù)部分
pow() 求冪
sin() 求正弦
sinh() 求雙曲正弦
sqrt() 求平方根
tan() 求正切
tanh() 求雙曲正切
PS.要用的時(shí)候,具體用法請(qǐng)自行百科 ^_^