內文於 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月 */
編譯後執行,結果如下
您可以繼續參考
字串處理 string.h
- char *strcpy(char *s1, const char *s2);
- char *strncpy(char *s1, const char *s2, size_t n);
- char *strcat(char *s1, const char *s2);
- char *strncat(char *s1, const char *s2, size_t);
- int strcmp(const char *s1, const char *s2);
- int strncmp(const char *s1, const char *s2, size_t n);
- char *strchr(const char *s, int c);
- size_t strcspn(const char *s1, const char *s2);
- size_t strspn(const char *s1, const char *s2);
- char *strpbrk(const char *s1, const char *s2);
- char *strrchr(const char *s, int c);
- char *strstr(const char *s1, const char *s2);
- char *strtok(char *s1, const char *s2);
- size_t strlen(const char *s);
- void *memcpy(void *s1, const void *s2, size_t n);
- void *memmove(void *s1, const void *s2, size_t n);
- int memcmp(const void *s1, const void *s2, size_t n);
- void *memchr(const void *s, int c, size_t n);
- void *memset(void *s, int c, size_t n);
4 則留言:
站長在memmove裡,程式上面所寫的
"以下程式從字元陣列 s 拷貝 6 個字元接到字元陣列 t 的後端"解釋的似乎不大對。
應該是"從元陣列 t 拷貝 6 個字元接到字元陣列 s 所指的位置,所以才會將"out of"這六個字元給蓋掉,變成"future work"。
剛好在唸站長寫的這個地方發現錯誤,不知道我說的對不對呢,請指教。
memmove() 的工作是拷貝字元替換到另一個字元陣列的前端,這部份的確寫錯了,內文已作修改,感謝指正 :)
TO站長:
好像修改之後寫反了的樣子
"字元陣列 s 拷貝 6 個字元替換字元陣列 t 前端的 6 個字元"
應將s和t交換
"字元陣列 t 拷貝 6 個字元替換字元陣列 s 前端的 6 個字元"
意思好像這樣才對喔
因為後來是印出s的字串,所以是將t覆蓋到s的字串上
維護網站辛苦嚕
已修改,感謝 :)
張貼留言