#include<stdio.h>
#include<malloc.h>
void my_strcpy(char *sour,char *dest){
if(sour == NULL || dest == NULL){
return;
}
while(*sour != '\0'){
*dest++ = *sour++;
}
*dest = '\0';
}
int main(){
char *d = NULL;
char *s = "Angus Declan R";
d = malloc(sizeof(char*));
my_strcpy(s,d);
printf("\n %s \n",d);
return 0;
}
此功能正常工作並打印字符串。我的疑問是指針「dest」將指向'\ 0',它如何打印整個字符串(因爲它沒有指向字符串的初始地址)。字符串複製功能
第一次檢查應該是'(sour == NULL || dest == NULL)'(OR,而不是AND)。另外,malloc行應該是'd = malloc(strlen(s)+1);'('d'需要指向一個足夠大的緩衝區,以保存字符串's'中的每個字符加NULL字符) – user1354557 2013-03-07 19:39:08
'd = malloc(sizeof(char *));'在大多數系統上沒有分配足夠的內存。通常一個指針是四個或八個字節大。 – 2013-03-07 19:40:18
只是一個小建議,你可以通過讓它返回一個int來改善你的功能。也許複製的字符數量,以及指示指針是否爲NULL的內容(如-1)。 – teppic 2013-03-07 21:01:45