部分函式功能的實現

2021-07-12 04:51:29 字數 3016 閱讀 9577

1:strcpy的實現

其中包含src字串結尾處的'\0'。

**實現:

#include//模擬實現strcpy

#include

void my_strcpy(char *dest,  const char *src)/*函式不需要返回*/

*dest='\0';/*拷貝上最後的'\0',因為strcpy有將src裡的'\0'拷貝到dest裡的功能*/

執行結果:

2:strcmp的實現

函式功能:字串大小的比較,如果有str1,str2兩個字串則有兩種結果,相等 ,str1大,str2大。

讓str1的第乙個元素和str2第乙個元素相比較它們的ascii值,若當比較到兩個字元最後還沒分出大小則返回0,如果沒有比較到『\0'的位置就分出大小則也返回相應的值。如的str1當前元素大於str2的當前元素則返回整數,否則返回負數。

**實現:

#include//模擬實現strcmp

#include

int my_strcmp(const char *str1, const  char *str2)/*str1和str2都不需要改變*/

str1++;/*如果str1和str2相等但是沒到字串末尾則讓str1和str2往後移動,再次比較*/

str2++;      

}return *str1-*str2;/*如果兩個不相等則用ascii相減返回*/

}int main()

else if(ret>0)

else if(ret<0)

return 0;

}執行結果:

#include//模擬實現strcat

#include

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

while(*src)

*dest='\0';

return  address;

}int main()

*//*

#include//模擬實現strncat

#include

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

for(i=0;i

/*#include//模擬實現strstr

#include

char *my_strstr(char *str1,char *str2)

return count;

}int main()

#include//模擬實現

strlen   

位址運演算法

#include

int my_strlen(const char *str)

return str-tmp;/*位址相減得到中間的元素的個數*/

}int main()

#include //模擬實現

strlen    

用遞迴方法

5:memcpy函式

記憶體拷貝函式,是將src所指記憶體位址的起始位置拷貝count個位元組到目標dest

所指向記憶體處的空間,是從dest第一的位置開始覆蓋,一共用src裡的n個位元組的資訊覆蓋。

函式原型:void  *memcpy(void *dest, const void *src,int count)

**實現:

#include//模擬實現momcpy

#include

void* my_momcpy(void *buf1,const void *buf2, int count )/*空型別的指標,所以buf1,buf2可以接收任何型別的陣列*/

return ret;

}int main()

memcpy和strcpy的區別:

strcpy只能對字串進行操作,且記憶體裡有0時strcpy有可能會誤以為是'\0',結束拷貝工作,這樣就會造成拷貝操作的侷限性;memcpy是記憶體拷貝函式,可以對任何型別的陣列進行拷貝,它是將乙個乙個位元組的資訊從src拷貝到dest裡,也可以跨型別進行拷貝。 (asi標準不規定memcpy實現記憶體重疊拷貝,但有的編譯器會實現此功能)

6:memmove函式

函式功能:將src所指向記憶體區域複製count個位元組資訊到dest裡,可以實現記憶體不重疊的拷貝工作,也能實現記憶體重疊處的拷貝工作

函式原型:void *memmove( void *dest, const void *src,  int count)

**實現:

#include//模擬實現mommove

#include

void* my_mommove(void *buf1,const void *buf2 ,int count)/*空型別的指標接收陣列名,以便於一次性將所有可能性的型別強制型別轉換成char* */

}else/*記憶體不重疊時*/ }

return ret;

}int main()

;int i;

my_mommove(arr+5,arr+2,16);/*將3 4 5 6 拷貝到 6 7 8 9的位置,4個元素16個位元組 */

for(i=0;i<10;i++)

return 0;

}執行結果:

(本次實現了strcmp,strcpy,strlen,memcpy,memmove,另外改進了strstr,strcat,strncat)

Window h部分函式功能

win環境下 system 函式的作用就是把字串輸入進 cmd裡 例如system echo for example 就和 std cout for,example 的作用相同。至於有多少個選項可以試試system help 這將會輸出所有 cmd命令 include stdafx.h includ...

實現發帖部分功能

html doctype html html head lang en meta charset utf 8 title 課工場論壇列表 title link href css bbs.css rel stylesheet head body div class bbs header span 我要...

容器vector部分功能的實現

這是c primer書中的例題。實現了vector容器的部分功能。具體內容在第四版的18.1節。要考慮到vector的記憶體分配策略。下面分別是用allocator 注釋的部分 和new,delete實現的。1.allocator allocate size t t 分配原始的未構造記憶體以儲存t個...