C語言自定義實現對string庫函式的功能

2021-09-22 14:04:06 字數 2321 閱讀 2108

1:strcpy函式將源字串拷貝到目標字串,目標字串的長度必須要大於源字串長度:注釋部分為原始版本,**較為冗長

char *mystrcpy(char *str1, const char *str2)

char *p = str1;

while (*(str2) != '\0')

*str1 = '\0';*/

char *p = str1;

while (*str1++ = *str2++)

return p;

}

2:strcat函式將源字串拼接到目標字串後,目標字串的長度要足夠長容納兩個字串。

char *mystrcat(char *str1, const char *str2)

while (*(str2) != '\0')*/

char *p = str1;

while (*str1 != '\0')

while (*str1++ = *str2++)

return p;

}3:strncat函式將源字串的指定長度拼接到目標字串後面,目標字串的長度要足夠長容納兩個字串。

char *mystrncat(char *str1, const char *str2, int n)

while (n!=0)

return p;

}

const char *mystrstr(const char *str1, const char *str2)

// }

// left = result;//當中間元素不同時退回第一次所指元素位址

// right = result + len2 - 1;

// }

// left++;//進行下乙個元素得判斷

// right++;

//}//return null;//未找到相同字元段時返回空位址。

const char *s1 = str1;

const char *s2 = str2;

const char *start = str1;

while (*start != '\0')

if (*s1 == '\0')

if (*s2 == '\0')

start++;

} return null;

}

const char *mystrchr(const char *str1, char c)

str1++;

} return null;

}

6:strcmp:比較兩個字串的大小,若第乙個字串大於第二個字串返回正數,小於返回負數,等於返回0;

int mystrcmp(const char *str1, const char *str2)

if (*(str1) < *(str2))

if (*(str1) == *(str2))

} return 0;

}

7:strncmp函式比較兩個字串前n個字元,若第乙個字串的前n個字元於第二個字串的前n個字元返回正數,小於返回負數,等於返回0;

int mystrncmp(const char *str1, const char *str2, int n)

if (*(str1) < *(str2))

if (*(str1) == *(str2))

} n--;

} return 0;

}

8:memcpy函式:將源陣列內容拷貝n個位元組數到目標陣列中,陣列的型別不定。且存在記憶體重疊問題是無法完成拷貝。

void *mymemcpy(void *str1, const void *str2, int n)

return p;

}

9:memove:將源陣列內容拷貝n個位元組數到目標陣列中,陣列的型別不定。解決memcpy函式存在的記憶體重疊問題。

void *mymemove(void *str1, const void *str2, int n)

}else

}return p;

}記憶體重疊問題:

str:12

3456

str+2:12

3456

str+2指向3,當str+2作為目標位址,str作為源位址,把str拷貝16個位元組到str+2中,理想拷貝結果為:1 2 1 2 3 4但按照memcpy函式執行時結果為:1 2 1 2 1 2.即存在記憶體重疊問題。

C 實現自定義string類

在一些c 筆試題裡,會有這樣一道題,那就是讓你自己實現乙個簡單的string類。自己在面試的時候就遇到過這個題。在這裡說一下自己是怎麼做的。主要包含一些基本的操作,建構函式 拷貝建構函式和析構函式。pragma once include using namespace std class mystr...

C 自定義String的實現

這個在面試或筆試的時候常問到或考到。已知類string的原型為 class string 請編寫string的上述4個函式。普通建構函式 string string const char str else string的析構函式 string string void 拷貝建構函式 string st...

c 自定義string類

1.標頭檔案部分 define crt secure no warnings pragma once include includeusing namespace std class mystring 2.函式定義部分 include mystring.h mystring mystring mys...