C++ char類型函數


1.0 字符串復制

1.1 strcpy() 完全復制

原型:char* strcpy(char* dest, char* src);
功能:把從src地址開始且含有 ‘\0’結束符的字符串復制到以dest開始的地址空間
返回指向dest的指針
說明: src 和 dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串

1 int main()
2 {
3     char src[]="abcde";
4     char dest[100];
5     strcpy(dest,src);
6     printf("%s",dest);
7     //輸出>> abcde 
8 }

1.2 strncpy() 部分復制

原型: char* strncpy(char* dest, char* src, int size_tn);
功能:將字符串src中最多n個字符復制到字符數組dest中(ta並不像strcpy一樣遇到NULL才停止復制,而是等湊夠n個字符才開始復制),返回指向dest的指針
說明:如果n > dest串長度,dest棧空間溢出產生崩潰異常

  • src串長度 <= dest串長度

如果n=(0, src串長度),src的前n個字符復制到dest中

但是由於沒有NULL字符,所以直接訪問dest串會發生棧溢出的異常情況

這時,一般建議采取memset將dest的全部元素用null填充

  • 如果n = src串長度,與strcpy一致
  • 如果n = dest串長度,[0,src串長度]處存放於desk字串,(src串長度, dest串長度]處存放NULL
  • src串長度 > dest串長度
  • 如果n = dest串長度,則dest串沒有NULL字符,會導致輸出會有亂碼
 1 int main()
 2 {
 3     char src[]="SWT is so great! We should % him everyday.";
 4     char dest[100];
 5 
 6     memset(dest,0,sizeof(dest));
 7     strncpy(dest,src,10);
 8     printf("%s\n",dest);
 9     //輸出>>SWT is so 
10 
11     memset(dest,0,sizeof(dest));
12     strncpy(dest,src,sizeof(src));
13     printf("%s\n",dest);
14     //輸出>>SWT is so great! We should % him everyday.
15 
16     memset(dest,0,sizeof(dest));
17     strncpy(dest,src,sizeof(dest));
18     printf("%s\n",dest);
19     //輸出>>SWT is so great! We should % him everyday.
20 
21     char des[10];
22     memset(des,0,sizeof(des));
23     strncpy(des,src,sizeof(src));
24     printf("%s\n",des);
25     //exe停止工作 
26 }

2.0 字符串合並

2.1 strcat() 完全合並

原型: char* strcat(char* dest, char* src);
功能:把src所指字符串添加到dest結尾處(覆蓋dest結尾處的 ‘\0’)並添加 ‘\0’
返回指向dest的指針
說明: src 和 dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串

1 int main()
2 {
3     char src[]="OI!";
4     char dest[]="We like ";
5     strcat(dest,src);
6     printf("%s",dest);
7     //輸出>>We like OI! 
8 }

2.2 strncat() 部分合並

原型: char* strncat(char* dest, char* src, int n);
功能:把src所指字符串的前n個字符添加到dest結尾處(覆蓋dest結尾處的 ‘\0’)並添加 ‘\0’
返回指向dest的指針
說明: src 和 dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串

1 int main()
2 {
3     char src[]="Please login in here!#$%@$@%@#$@%";
4     char dest[]="Welcome to the largest talking room of SLYZ! ";
5     strncat(dest,src,21);
6     printf("%s",dest);
7     //輸出>>Welcome to the largest talking room of SLYZ! Please login in here! 
8 }

3.0 字符串查找

3.1 strchr() 查找字符

原型: char* strchr(char* s, char c);
功能: 查找字符串s中首次出現字符c的位置
說明: 返回首次出現c的位置的指針,如果s中不存在c則返回NULL

1 int main()
2 {
3     char src[]="Can you find some thing?";
4     int t=strchr(src,'?')-src;
5     printf("%d",t);
6     //輸出>>23
7 } 

3.2 strchr() 查找字符串

原型: char* strstr(char* haystack, char* needle);
功能: 從字符串haystack中尋找needle第一次出現的位置(不比較結束符”\0”)
說明: 返回指向第一次出現needle位置的指針,如果沒找到則返回NULL

1 int main()
2 {
3     char src[]="Can you find some thing?";
4     int t=strstr(src,"thing")-src;
5     printf("%d",t);
6     //輸出>>18
7 }

4.0 字符串比較

4.1 strcmp() 區分大小寫

原型: int strcmp(char* s1, char* s2);
功能: 比較字符串s1和s2,區分大小寫
說明: 當s1 < s2時,返回值<0;
    當s1 = s2時,返回值=0;
    當s1 > s2時,返回值>0。

1 int main()
2 {
3     char src[]="Hello!";
4     char dest[]="hello!";
5     if (!strcmp(src,dest)) printf("SAME");
6     else printf("DIFFERENT");
7     //輸出>>DIFFERENT 
8 }

4.2 stricmp() 不區分字母的大小寫

原型: int stricmp(char* s1, char* s2);
功能: 比較字符串s1和s2,但不區分字母的大小寫
說明: 當s1 < s2時,返回值<0;
    當s1 = s2時,返回值=0;
    當s1 > s2時,返回值>0。

1 int main()
2 {
3     char src[]="Hello!";
4     char dest[]="hello!";
5     if (!stricmp(src,dest)) printf("SAME");
6     else printf("DIFFERENT");
7     //輸出>>SAME
8 }

4.3 strncmp() 部分比較,區分字母的大小寫

原型: int strncmp(char* s1, char* s2, int n);
功能: 比較字符串s1和s2的前n個字符
說明: 當s1 < s2時,返回值<0;
    當s1 = s2時,返回值=0;
    當s1 > s2時,返回值>0。

1 int main()
2 {
3     char src[]="A APPLE A DAY.";
4     char dest[]="a apple a day.";
5     if (strncmp(src,dest,8)==0) printf("SAME");
6     else printf("DIFFERENT");
7     //輸出>>DIFFERENT 
8 } 

4.4 strnicmp() 部分比較,不區分字母的大小寫

原型: int strnicmp(char* s1, char* s2, int n);
功能: 比較字符串s1和s2的前n個字符但不區分大小寫
說明: 當s1 < s2時,返回值<0;
    當s1 = s2時,返回值=0;
    當s1 > s2時,返回值>0。

1 int main()
2 {
3     char src[]="A APPLE A DAY.";
4     char dest[]="a apple a day.";
5     if (strnicmp(src,dest,8)==0) printf("SAME");
6     else printf("DIFFERENT");
7     //輸出>>SAME 
8 } 

5.0 字符串轉化

5.1 strupr() 小寫轉大寫

原型: char* strupr(char* s);
功能: 將字符串s轉換為大寫形式
說明: 只轉換s中出現的小寫字母,不改變其它字符
返回指向s的指針

1 int main()
2 {
3     char s[]="Let's % SWT together!";
4     strupr(s);
5     printf("%s",s);
6     //輸出>>LET'S % SWT TOGETHER!
7 }

5.2 strlwr() 大寫轉小寫

原型: char* strlwr(char* s);
功能: 將字符串s轉換為小寫形式
說明: 只轉換s中出現的大寫字母,不改變其它字符
返回指向s的指針

1 int main()
2 {
3     char s[]="Let's % SWT together!";
4     strlwr(s);
5     printf("%s",s);
6     //輸出>>let's % swt together!
7 }

5.3 strrev() 字符串倒置

原型: char* strrev(char* s);
功能: 把字符串s的所有字符的順序顛倒過來(不包括空字符”\0”)
說明: 返回指向顛倒順序后的字符串指針

1 int main()
2 {
3     char s[]="!uoy kcor lliw eW";
4     strrev(s);
5     printf("%s",s);
6     //輸出>>We will rock you!
7 }

5.4 strset() 字符設置

原型: char* strset(char* s, char c);
功能: 把字符串s中的所有字符都設置成字符c
說明: 返回指向s的指針

1 int main()
2 {
3     char s[]="(!@&*#$^*@#&^(!@#*))";
4     strset(s,'%');
5     printf("%s",s);
6     //輸出>>%%%%%%%%%%%%%%%%%%%%
7 }

 

參考鏈接:https://blog.csdn.net/wu_tongtong/article/details/79004668


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM