C 語言標準函數庫分類導覽 - string.h memmove()

string.h 的函數 memcpy() 類似 strncat() ,從某一記憶體區段拷貝 n 個字元替換到另一記憶體區段的前端。



內文於 2012, 7, 5 進行修改


以下程式從字元陣列 t 拷貝 6 個字元替換字元陣列 s 前端的 6 個字元
#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[20] = "out of work";
    char t[20] = "future";
    
    memmove(s, t, 6);
    
    printf("%s\n", s);
    
    return 0;    
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:cmemmove.c
    功能:示範 string.h 中函數 memmove() 的使用
    作者:張凱慶
    時間:西元2010年6月 */


編譯後執行,結果如下



您可以繼續參考


4 則留言:

Unknown 提到...

站長在memmove裡,程式上面所寫的
"以下程式從字元陣列 s 拷貝 6 個字元接到字元陣列 t 的後端"解釋的似乎不大對。
應該是"從元陣列 t 拷貝 6 個字元接到字元陣列 s 所指的位置,所以才會將"out of"這六個字元給蓋掉,變成"future work"。

剛好在唸站長寫的這個地方發現錯誤,不知道我說的對不對呢,請指教。

Kaiching Chang 提到...

memmove() 的工作是拷貝字元替換到另一個字元陣列的前端,這部份的確寫錯了,內文已作修改,感謝指正 :)

Unknown 提到...

TO站長:
好像修改之後寫反了的樣子
"字元陣列 s 拷貝 6 個字元替換字元陣列 t 前端的 6 個字元"
應將s和t交換
"字元陣列 t 拷貝 6 個字元替換字元陣列 s 前端的 6 個字元"
意思好像這樣才對喔
因為後來是印出s的字串,所以是將t覆蓋到s的字串上
維護網站辛苦嚕

Kaiching Chang 提到...

已修改,感謝 :)