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
