c字串拷貝操作

2021-09-01 07:49:25 字數 1742 閱讀 2812

#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 ...