自定義實現字符串函數


//自主實現字符串函數
strset(char * str, char c) #include <stdio.h> #include <stdlib.h> #include <string.h> ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void myStrrev(char *p){ //字符串逆轉 int length = strlen(p); int tmp =0; for (int i = 0; i < length/2; ++i) { tmp = p[i]; p[i] =p[length-1-i]; p[length-1-i] = tmp; } } void main11(){ //字符串逆轉 char str[18] ="China is great"; //strrev(str); myStrrev(str); printf("%s\n",str); // taerg si anihC } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //字符串大小寫轉換 void myStrupr(char *p){ while (*p != '\0'){ if(*p >='a' && *p <='z'){ *p = *p - 32; } p++; } } void myStrlwr(char *p){ while (*p != '\0'){ if(*p >='A' && *p <='Z'){ *p = *p + 32; } p++; } } void main12(){ //字符串大小寫轉換 char str[18] ="China is great"; //strupr(str); myStrupr(str); printf("%s\n",str); // CHINA IS GREAT //strlwr(str); myStrlwr(str); printf("%s\n",str); // china is great } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int myStrlen(char *p){ //求字符串長度 int i = 0; while (*p != '\0'){ p++; i++; } return i; } void main13(){ //求字符串長度 char str[18] ="China is great"; printf("%d\n",strlen(str)); // 14 printf("%d\n",myStrlen(str)); // 14 } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void myStrcpy(char *dest, char*source){ //求字符串拷貝 if(dest == NULL || source == NULL){ return; } else{ while (source != NULL){ *dest =*source; dest++; source++; } *dest = '\0'; //dest[0] = '\0'; } } void main14(){ //求字符串拷貝 char str1[18] ="China is great"; char str2[20]; //strcpy(str2,str1); myStrcpy(str2,str1); printf("%s\n",str2); //China is great } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void myStrcat(char *dest, char*source){ //求字符串連接 if(dest == NULL || source == NULL){ return; } else{ //char *p =(char *) realloc(dest,strlen(dest)+strlen(source)+1); int destLen = strlen(dest); dest = dest +destLen; while (*source != '\0'){ *dest =*source; dest++; source++; } *dest = '\0'; //dest[0] = '\0'; } } void main15(){ //求字符串連接 char str1[18] ="China is"; char str2[20] = " great"; //strcat(str1,str2); myStrcat(str1,str2); printf("%s\n",str1); //China is great } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// char * myStrchr(char *str, char ch){ //字符查找 while (*str !='\0'){ if(*str == ch){ return str; } str++; } return NULL; } void main16(){ //字符查找 char str[18] ="China is great"; char ch = 'a'; char *p = strchr(str,ch); //找到返回其位置,沒有找到范返回NULL printf("%s\n",p); //a is great p = myStrchr(str,ch); printf("%s\n",p); //a is great } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int myStrcmp(char *str1, char *str2){ //字符比較 while (*str1 == *str2){ if(*str1 == '\0' && *str2 == '\0'){ return 0; } str1++; str2++; } return -1; } void main17(){ //字符比較 char *str1 ="China is great"; char *str2 ="China is great"; /* if(str1 == str2){ //C語言無法這樣進行字符串比較,str1和str2都是地址 printf("equality"); }*/ if(strcmp(str1,str2) == 0){ printf("equality"); } if(myStrcmp(str1,str2) == 0){ printf("equality"); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// char * myStrstr(char *str1, char *str2){ //字符串的查找,也可以用下表法,數組的方式 char *p = str1; //指針初始化可以用 void *p; void類型的指針可以轉換成任意類型 // char *p = (char *)p; char *str2Begin = str2; while (*str1 != '\0'){ p = str1; //為了保存,str2的第一個字符在str1中出現的位置,返回以后返回 str2 = str2Begin; // while (*str1 == *str2 || *str2 == '\0'){ //*str2 == '\0' 為了最后一位進行比較的數據,可以進入if判斷,返回p,防止進入死循環 if(*str2 == '\0') { return p; } str2++; //str1和str2中第一個字符相等了就繼續往后移動 str1++; } str1 =p; //千萬別漏掉這一步,在與子串比較過程中,str1已經往后移動一大步 str1++; //主串中未找到就繼續往后移動 } } void main(){ //字符串的查找 char *str1 ="Chiniiss is great"; char *str2="is"; char *p = strstr(str1,str2); printf("%s\n",p); char *myP= myStrstr(str1,str2); printf("%s\n",myP); }

 


免責聲明!

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



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