1. 程式人生 > >每日一題——memcpy,strcpy,memmove的實現

每日一題——memcpy,strcpy,memmove的實現

memcpy與strcpy的區別:
1,用途不同:strcpy主要用來字串拷貝,memcpy主要是其他型別的拷貝;
2,使用方式不同:strcpy是遇到‘\0’停止,memcpy是根據第三個引數來決定拷貝內容;

memmove:
原型:void memmove( void dest, const void* src,size_t count );
用途:從src的count個字元拷貝到dest
這裡需要注意src與dest的位置關係,從而確定是正向拷貝還是反向拷貝。

實現:

//strcpy
char* strcpy(char* dest,const char* src)
{
    if
((dest == NULL) || (src == NULL)) return NULL; char* strdest = dest; while (*src != '\0') *strdest++ = *src++; return strdest; }
//memcpy
void* memcpy(void* dest,const void* src,size_t count)
{
    if (dest == NULL || src == NULL)
        return NULL;
    char* tempDest = (char
*)dest; char* tempSrc = (char*)src; while (count--) *tempDest++ = *tempSrc++; return dest; }
//memmove
void* Mymemmove(void* dest, void* src,size_t count)
{
    assert(dest != NULL && src != NULL);
    char* mydest = (char*)dest;
    char* mysrc = (char*)src;
    char* ret = (char
*)dest; if (mydest <= mysrc || mydest >= mysrc+count) //正向 { while (count--) *mydest++ = *mysrc++; } else { mydest += count - 1; mysrc += count - 1; while (count--) *mydest-- == *mysrc--; } return ret; }

相關推薦

每日——memcpystrcpymemmove實現

memcpy與strcpy的區別: 1,用途不同:strcpy主要用來字串拷貝,memcpy主要是其他型別的拷貝; 2,使用方式不同:strcpy是遇到‘\0’停止,memcpy是根據第三個引數來決

CFT每日之 天下武功唯快不破

首先,進入題目頁面,大意就是說,你必須足夠快(二十年沒白擼的那種) 一開始以為是頁面重定向,然後抓包    欸,在響應包裡發現了什麼 FLAG ,沒錯,就是FLAG,這還不是美滋滋,複製提交 。哎,臥槽,不對,肯定是網路問題,再提交,還不對,思考三秒,哦,知道了,肯定

每日 LeetCode 有效的數字 Python實現

字典 true false 如果 有效 solution code del append 有效的數字(簡單題) class Solution:def isValid(self, s):""":type s: str:rtype: bool&qu

老男孩教育每日-2017年5月7日-加餐-linux下面如何實現執行rm命令就顯示do not use rm command

linux別名 每日一題 1.題目-老男孩教育每日一題-2017年5月7日-加餐-linux下面如何實現,執行rm命令,就顯示do not use rm command2.要求結果[[email protected]/* */ ~]# rm do not use rm command3.答

老男孩教育每日-2017年5月24日-腦洞神探之tmp目錄的下的備份文件突然沒了誰來背鍋?

tmp目錄 每日一題 1.題目老男孩教育每日一題-2017年5月24日-腦洞神探之tmp目錄的下的備份文件突然沒了,誰來背鍋?2.參考答案1.運維幹的2.開發幹的3.系統幹的,系統安裝了一個命令tmpwatch,定期刪除文件。在Centos/RHEL/Fedora系統下存在清理機制(Ubuntu下沒有

​老男孩教育每日-第85天-下面這個腳本直接執行沒有問題在定時任務中有問題什麽原因?

定時任務 環境變量問題 無法取出ip地址 每日一題 腳本內容:[[email protected]/* */ scripts]# cat /server/scripts/ip.sh #!/bin/bash IP=$(ifconfig eth0 |awk -F "[ :]+" ‘N

老男孩教育每日-第84天-兩個文件把第一個文件中的第2、3行內容添加到第二個文件的第3行後面

每日一題兩個文件如下:[[email protected]/* */ ~]# cat 1.txt 111 222 333 [[email protected]/* */ ~]# cat 2.txt AAA bbb ccc ddd要求修改後的文件[[email protect

老男孩教育每日-第82天-發現文件系統只讀了是什麽原因?如何解決?

文件系統 只讀 每日一題 參考答案目前已知造成硬盤分區只讀的可能原因有:文件系統錯誤內核相關硬件驅動bug磁盤壞道HBA卡故障RAID卡故障解決方法:1.重啟系統後看看是否可以自動恢復2.使用fdisk修復3.卸載只讀的分區,然後重新mount掛載mount -o remount,rw /網友回答

愛創課堂每日第五十七天-一個頁面從輸入 URL 到頁面加載顯示完成這個過程中都發生了什麽?

前端 前端學習 前端入門 北京前端分為4個步驟: (1),當發送一個URL請求時,不管這個URL是Web頁面的URL還是Web頁面上每個資源的URL,瀏覽器都會開啟一個線程來處理這個請求,同時在遠程DNS服務器上啟動一個DNS查詢。這能使瀏覽器獲得請求對應的IP地址。 (2), 瀏覽器與遠程

每日--4--在兩個文件中取交集顯示指定的內容

-bash alex 條件 lex head 密碼 一個 用戶 輸出 把這個兩個文件都存在的用戶的密碼輸出出來 [root@sentinel student]# head file1 file2 ==> file1 <== oldboy 1234 alex

每日之LeetCode 棧簡單集合496682,232,225,155,84420

496 下一個最大的元素方法1 :自己瞎寫的 沒有考慮到棧的特性class Solution:def nextGreaterElement(self, nums1, nums2): L=[] for i in nums1: k=nums2.index(i)

<每日>題目11:以資料夾名稱作為引數返回該資料夾下所有檔案的路徑

''' 分析: 1.知道資料夾名稱(假設是形如:E:\\software\\Notepad++),很顯然可以通過OS模組去求 2.OS.listdir(sPath),列出資料夾內所有的檔案和資料夾,以列表的形式返回(可以迭代) 3.將sPath的路徑和求得的資料夾或檔案的名字拼接

每日——求二叉樹葉子節點個數第K層節點個數

1,求葉子節點個數 int leafnum(Node* root) { if(root == NULL) return 0; if(root->left ==

每日」有人上次在dy面試面試官問我:vue資料繫結的實現原理。你說我該如何回答?

關注「鬆寶寫程式碼」,精選好文,每日一題 ​時間永遠是自己的 每分每秒也都是為自己的將來鋪墊和增值 >作者:saucxs | songEagle >來源:原創 ## 一、前言 文章首發在「鬆寶寫程式碼」 2020.12.23 日剛立的 flag,每日一題,題目型別不限制,可以是:演算法題,面試

老男孩教育每日-2017年5月9日-vim命令粘貼帶#號或註釋信息格式會出現混亂情況怎麽辦

vim/vi粘貼 每日一題 格式混亂 1.題目老男孩教育每日一題-2017年5月9日-vim編輯器使用知識點:vim命令粘貼帶#號或註釋信息格式會出現混亂情況,有什麽方法進行解決?問題說明:每次復制代碼時,如果代碼裏有 //或# 這樣的註釋就容易讓格式亂掉,顯示的內容不整齊,並不是所期望的顯示格式

老男孩教育每日-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?

邏輯卷管理 磁盤 每日一題 1.題目老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?2.參考答案01:將一個或多個物理分區創建為一個PV# pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" success

老男孩教育每日-2017-05-15-說說你在vi/vim中常用的命令或快捷鍵

vi-vim編輯器 linux編輯器 每日一題 1.題目老男孩教育每日一題-2017-05-15-說說你在vi/vim中常用的命令或快捷鍵2.參考答案01:學會在vim中查詢幫助:help 或:h即可 :help G :help :wq02.vi/vim 使用最基本方法第一個裏程碑-使用vi打開o

老男孩教育每日-2017年5月18日-說說|(管道)與|xargs(管道xargs)的區別

管道 每日一題 管道xargs 1.題目老男孩教育每日一題-2017年5月18日-說說|(管道)與|xargs(管道xargs)的區別2.參考答案find |xargs ls -ld##把前一個命令的結果,通過管道傳遞給後面的命令(ls -ld),傳遞的是文件名find | 命令 ##把

老男孩教育每日-2017年5月19日-使用find命令的時候 |xargs(管道xargs)與-exe有什麽區別?

打包壓縮 xargs g管道 exec 每日一題 1.題目老男孩教育每日一題-2017年5月19日-使用find命令的時候 |xargs(管道xargs)與-exe有什麽區別?2.參考答案一般來說這兩個參數或命令是一樣的。可是在一些情況下尤其是打包壓縮的時候差別就很大了。find /old

老男孩教育每日-2017年5月22日-命令風暴:變量a=’a/b/c’如何截取得到c

linux三劍客 每日一題 取字符串 1.題目老男孩教育每日一題-2017年5月22日-命令風暴:變量a=’a/b/c’如何截取得到c2.參考答案系統環境[[email protected]/* */ ~]# uname -r2.6.32-504.el6.x86_64 [[email&