#include
char *strcpy(char *dest,char *src);
char *strdup(const char *s);
char *strndup(const char *s, size_t n);
void *memcpy(void *dest, const void *src, int n)
void *memmove( void* dest, const void* src, size_tcount )
strcpy 把src所指由null結束的字串複製到dest所指的陣列中,src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串,返回指向dest的指標。
strdup()主要是拷貝字串s的乙個副本,由函式返回值返回,這個副本有自己的記憶體空間,和s不相干。
strndup()就是,拷貝的時候,最多拷貝n個字元,如果s的長度大於n,後面的就略去。
memcpy 從源src所指的記憶體位址的起始位置開始拷貝n個位元組到目標dest所指的記憶體位址的起始位置中,與strcpy相比,memcpy並不是遇到'\0'就結束,而是一定會拷貝完n個位元組,如果目標陣列destin本身已有資料,執行memcpy()後,將覆蓋原有資料(最多覆蓋n)。如果要追加資料,則每次執行memcpy後,要將目標陣列位址增加到你要追加資料的位址;注意,source和destin都不一定是陣列,任意的可讀寫的空間均可。
memmove由src所指記憶體區域複製count個位元組到dest所指記憶體區域,src和dest所指記憶體區域可以重疊,但複製後dest內容會被更改。函式返回指向dest的指標。
code for example:
//str copy
#include
#include
#include
#define buffer_size 128
int main();//must add \0
char s=;
char d1[buffer_size];
char d2[buffer_size];
//功能:把src所指由null結束的字串複製到dest所指的陣列中
strcpy(d1,s1);
strcpy(d2,s2);
printf("%s\n",d1);
printf("%s\n",d2);
//返回指向被複製的字串的指標,所需空間由malloc()分配且可以由free()釋放
char *dup=strdup(s2);
printf("%s\n",dup);
free(dup);
//而memcpy可以複製任意內容,例如字元陣列、整型、結構體、類等,根據其第3個引數決定複製的長度
char men[buffer_size];
memcpy(men,s,3);
men[strlen(s)]='\0';
printf("%s\n",men);
//void *memmove( void* dest, const void* src, size_t count),由src所指記憶體區域複製count個位元組到dest所指記憶體區域,src和dest所指記憶體區域可以重疊,但複製後dest內容會被更改。函式返回指向dest的指標
memmove(s1,s1+6,(strlen(s1)-6));
s1[strlen(s1)-6]='\0';
printf("%s\n",s1);
return 0;
}
彙編 串操作 字串拷貝
一 實習題目 串操作 二 實習目的 掌握串操作程式設計的基本方針 三 實習內容 將首位址 data1 按位元組儲存的資料塊通過使用字串操作將其移動到首位址為 data2 的資料塊中。四 data segment dataone db it is a temp string 0ah,0dh,datat...
字串操作之字串拷貝功能實現
includeusing namespace std 思路分析 a.確定被拷貝的陣列記憶體是否小於等於目標陣列的記憶體大小 b.拷貝陣列 c.目標陣列最後乙個字元為空字元 0 str1 被拷貝的陣列 str2 目標陣列 len 目標陣列的長度 bool stringcopy char str1,ch...
C語言字串拷貝
include stdafx.h using namespace std 說明 字串拷貝版本1 引數 dest目標位址,src源位址 返回 返回拷貝好的位址 如果出錯或者有重疊,無定義 異常 可能出現字串溢位,及dest所佔空間不如src所佔空間大。char strcpy v1 char dest ...