- 論壇徽章:
- 1
|
本帖最后由 L_kernel 于 2012-10-19 14:23 編輯
kelvin_fly 發(fā)表于 2012-10-19 13:40 ![]()
回復(fù) 8# Ager
筆誤,已修改。 謝謝。 三個(gè)個(gè)錯(cuò)誤,第一個(gè)是dest沒(méi)有malloc,第二個(gè)循環(huán)那里不能終止,一直寫(xiě)下去,會(huì)越界,所以會(huì)Segment fault。第三個(gè)是return a,返回不到你要的結(jié)果,return dest才是正確的(你想要的結(jié)果)。- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- char *memmovea(char *dest, const char *src, size_t n);
- int main()
- {
- char *dest, *res, *src = "abcdefg";
- int n = 4;
- dest = malloc(n+1);
- memset(dest, '\0', n+1);
- res = memmovea(dest,src,n);
- puts(res);
- return 0;
- }
- char *memmovea(char *dest, const char *src, size_t n)
- {
- int i;
- char *a = dest;
- /* char *b = src; */
- for(i=0; i<n; i++,*dest++=*src++)
- ;
- return a;
- }
復(fù)制代碼 |
|