從頭學(xué)習(xí)C語言之字符串處理函數(shù)
字符串處理函數(shù):
存放和使用字符串:
字符串常量:“fishc”,“小甲魚”,“魚C工作室”字符數(shù)組:

獲取字符串長度:strlen
用法:strlen(str)
注意:
- 這個函數(shù)獲得的是長度(不帶’\0’),不是尺寸。
- 頭文件<string.h>
- 最好用%u(無符號十進制數(shù))輸出,因為輸出的是長度,當(dāng)然%d也行。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[]="i love fishc.com!";
printf("sozeof(str)= %d\n",sizeof(str));
printf("strlen(str)= %u\n",strlen(str));
return 0;
}
拷貝字符串:strcpy和strncpy
用法:strncpy(目標(biāo)字符串,待拷貝字符串);
注意:
- 不可以用變量來拷貝字符串
- 將長的字符串拷貝進入短的字符串中會溢出
- C語言不會對數(shù)組的邊界做檢查,如果內(nèi)存溢出也不會報錯
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="original string";
char str2[]="new string";
char str3[100];
strcpy(str1,str2); 10 strcpy(str3,"copy sucessful");
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
printf("str3:%s\n",str3);
return 0;
}
strncpy:
用法:
strncpy(目標(biāo)字符串,待拷貝字符串,拷貝字符串尺寸);
注意:
- 可定義拷貝進去的字符長度
- 如果源字符串長度小于目標(biāo)數(shù)組,會用’\0’來填充額外的空間
- 如果大于,則會截取目標(biāo)數(shù)組的字符串長度來替換,(并且不含’\0’,則需要在結(jié)尾加上’\0’)。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="to be or not to be";
char str2[40];
strncpy(str2,str1,5);
str2[5]='\0'; //在結(jié)尾加上'\0'
printf("str2:%s\n",str2);
return 0;
}
連接字符串:strcat和strncat
用法:strcat(一號字符串,二號字符串);//把二號加到一號后面
注意:
- strncat和strncpy一樣,是為了限定加上的字符個數(shù)
- 不同的是,在連接之后自動追加結(jié)束符’\0’。
示例:
例一:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="to be or not to be";
char str2[]="fishc.com!";
strcat(str1," ");//在str1后面加上個空格,沒什么作用,僅僅為了好看點
strcat(str1,str2);
printf("str1:%s\n",str1);
return 0;
}
例二:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="to be or not to be";
char str2[]="fishc.com!";
strncat(str1," ",2);//2用來限定所加的字符個數(shù)
strncat(str1,str2,5);
//不需要加'\0'來表示結(jié)束,這個會自己加
printf("str1:%s\n",str1);
return 0;
}
比較字符串:strcmp和ctrncmp
用法:strcmp(str1,str2)
注意:字符串相等的話會返回0
從返回值來剖析:
該函數(shù)的返回值如下:
- 如果返回值小于 0,則表示 str1 小于 str2。
- 如果返回值大于 0,則表示 str1 大于 str2。
- 如果返回值等于 0,則表示 str1 等于 str2。
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="fishc.com!";
char str2[]="fishc.com!";
if(!strcmp(str1,str2))//strcmp前面要加'非'(!),因為strcmp判斷相等的話返回值為0
{
printf("兩個字符串完全一致!\n");
}
else
{
printf("兩個字符串存在差異!\n");
}
return 0;
}
strncmp和strcmp和區(qū)別:
限制比較的長度,可在后面加上限制參數(shù)
示例:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[]="fishc.cfm!";
char str2[]="fishc.com!";
if(!strncmp(str1,str2,5))//strcmp前面要加'非'(!),因為syrcmp判斷一致的話返回值 為0
{
printf("兩個字符串完全一致!\n");
}
else
{
printf("兩個字符串存在差異!\n");
}
return 0;
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)
這篇文章主要介紹了詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-10-10
c語言結(jié)構(gòu)體字節(jié)對齊的實現(xiàn)方法
在c語言的結(jié)構(gòu)體里面一般會按照某種規(guī)則去進行字節(jié)對齊。本文就來介紹一下如何實現(xiàn),具有一定的參考價值,感興趣的可以了解下2021-07-07
C語言單循環(huán)鏈表的表示與實現(xiàn)實例詳解
這篇文章主要介紹了C語言單循環(huán)鏈表的表示與實現(xiàn),對于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的朋友來說很有參考借鑒價值,需要的朋友可以參考下2014-07-07
將正小數(shù)轉(zhuǎn)化為2-9進制小數(shù)的實現(xiàn)方法
本篇文章對正小數(shù)轉(zhuǎn)化為2-9進制小數(shù)的實現(xiàn)方法進行了介紹,需要的朋友參考下2013-05-05
C/C++實現(xiàn)矩陣的轉(zhuǎn)置(示例代碼)
C/C++實現(xiàn)矩陣的轉(zhuǎn)置(示例代碼)需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10

