通常,有關字串操作的庫函式有strcpy,stract,strcmp,strstr,memcpy和memmove等。本文中將模擬實現這些庫函式。
#include#include#includechar * my_strcpy(char *crr, char *drr)
*crr = *drr;//將'\0'拷進去
return crr;
}int main()
; my_strcpy(arr, "aduoduo");
printf("%s\n", arr);
system("pause");
return 0;
}
2.stract函式
功能:將drr指向的字串連線到以crr指向的字串後面,crr和drr所指記憶體區域不可以重疊,並且crr必須有足夠的空間來容納drr的字串。返回值的型別為char*。
#include#include#includechar *my_strcat(char *crr, char *drr)
//開始復*drr
while ((*crr++ = *drr++))
return crr;
}int main()
3.strcmp函式
功能:比較crr和drr指向的兩個字串。若*crr==drr,則返回零;若crr>*drr,則返回1;否則返回-1。
#include#include#includeint my_strcmp(char *crr, char *drr)
crr++;
drr++;
} if (*crr > *drr)
else }
int main()
#include#include#includechar * my_strstr( char *crr, char *drr)
while (*cur)
if (*s2 == '\0')
}//匹配不成功,則cur跳到cur指向字串下乙個元素接著與子字串比較
cur++;
} //匹配失敗
return 0;
}int main()
#include#include#includevoid * my_memcpy(void *crr, void *drr,size_t count)
return ret;
}int main()
; int arr2[20] = ;
my_memcpy(arr1,arr2,20);
system("pause");
return 0;
}
6.memmove函式
源drr所指的記憶體位址的起始位置開始拷貝count個位元組到目標crr。如果目標區域和源區域有重疊的話,memmove能夠保證源串在被覆蓋之前將重疊區域的位元組拷貝到目標區域中,複製後src內容會被更改。
思路:
**:
#include#include#includevoid * my_memove(void *crr, void *drr, size_t count)
} else }
return ret;
}int main()
; my_memove(arr1, arr1+2, 20);
system("pause");
return 0;
}
模擬實現字串庫函式
1.strcat 1 函式功能 實現兩個字串的連線 2 思想 首先遍歷目標字串,找到 0 的位址,然後將資源字串通過指標一次一次的拼接在目標字串後面,直到指標走到資源字串的 0 3 char mystrcat char strdestination,const char strsource whil...
C語言 字串庫函式的模擬實現
1.實現strlen 字串長度 1.計數器方式 intmy strlen const char str return count 2.不建立臨時變數計數器 遞迴 intmy strlen const char str else 3.指標 指標的方式 intmy strlen const char s...
字串操作函式的模擬實現
包含一些應試需要注意的細節,希望能夠幫助到大家。感受一下,在字串操作函式中,需要注意的還是要判斷引數是否為空。做判斷時,使用assert 斷言,其用法在下文注釋中標註。再加上指標的簡單應用,其模擬也不難實現。include include strlen 第一種 int my strlen const...