幾個庫函式的實現

2021-08-21 18:59:00 字數 1098 閱讀 1209

1.strcpy函式:用於字串的拷貝。

char* my_strcpy(char *dest, const char *src)

return start;

}

加入斷言增加函式的健壯性,對不需要修改的字串用const修飾,返回char*實現函式間的鏈式訪問。

注意末尾加『\0』。

2.strcat函式:用於將乙個字串補在另乙個字串後。

char* my_strcat(char *dest, const char *src)

while ((*dest++ = *src++))

return start;

}

3.memcpy函式: 用於記憶體拷貝,將一塊記憶體中的值拷貝到另一塊記憶體中,sz為拷貝的位元組數。

void* my_memcpy(void *dest, void *src, int sz)

return dest;

}

void*型別的指標可以接受任意型別的指標,實現函式的多用性,但void*型別的指標不能進行運算,若要計算需要進行強制型別轉換,函式返回型別為void*,所以用時也要進行強制型別轉換。

4.memmove函式:與memcpy作用相同,但這個函式考慮重疊問題,判斷進行從前向後拷貝或從後向前拷貝。

如:1,2,3,4,5,6,7;將2,3,4,5拷貝到4,5,6,7處得到1,2,3,2,3,4,5。而不會被覆蓋為1,2,3,2,3,2,3。

注意:有些編譯器將memmove和memcpy功能實現的相同,c語言標準並沒有對此做出嚴格規定。

void* my_memmove(void *dest, void *src, int sz)

} else }

return dest;

}

char* my_strstr(const char *dest, const char *src)

if (*src == '\0')

if (*dest == '\0')

start++;

}}

不呼叫庫函式,模擬實現幾個標準庫函式

原型宣告 char strcpy char dest,const char src 標頭檔案 include 和 include 功能 把從src位址開始且含有null結束符的字串複製到以dest開始的位址空間 說明 src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字...

庫函式strstr的實現

函式strstr的原型是char strstr char str1,char str2 其功能是在str1中返回指定字串str2的第一次出現的位置。view plaincopy to clipboardprint?01.include 02.include 03.int main void 04.1...

庫函式atoi 的實現

int atoi const char nptr 假設第乙個非空格字元存在,是數字或者正負號則開始做型別轉換,之後檢測到非數字 包含結束符 0 字元時停止轉換。返回整形數。否則,返回零。這裡需注意 假設字串是非法輸入 字串為空,僅僅有乙個 或 非數字等返回的是整形數0 而假設輸入是 0 返回的也是整...