使用c中的链表制作strcpy函数

我使用链表创建自己的strcpy函数但无法完成。 没有使用链表,它可能是这样的

char* cp2014strcpy(char * dest_ptr, const char * src_ptr) { char* strresult = dest_ptr; if((NULL != dest_ptr) && (NULL != src_ptr)) { while (NULL != src_ptr) { *dest_ptr++ = *src_ptr++; } *dest_ptr = NULL; } return strresult; } 

但我无法得到如何使用链表制作strcpy。

 #include  #include  typedef struct node { char ch; struct node *next; } LL_str; LL_str *LL_new(char ch){ LL_str *s = malloc(sizeof(*s));//check omitted s->ch = ch; s->next = NULL; return s; } LL_str *s_to_LL(const char *s){ LL_str *top, *curr; if(!s || !*s) return NULL; curr = top = LL_new(*s); while(*++s){ curr = curr->next = LL_new(*s); } return top; } LL_str *LL_strcpy(const LL_str *s){//LL_strdup ?? LL_str *top, *curr; if(!s) return NULL; curr = top = LL_new(s->ch); s=s->next; while(s){ curr = curr->next = LL_new(s->ch); s=s->next; } return top; } void LL_println(const LL_str *s){ while(s){ putchar(s->ch); s = s->next; } putchar('\n'); } void LL_drop(LL_str *s){ if(s){ LL_drop(s->next); free(s); } } int main(int argc, char *argv[]){ LL_str *s = s_to_LL("Hello world!"); LL_str *d = LL_strcpy(s); LL_println(d); LL_drop(s); LL_drop(d); return 0; } 

if((NULL != dest_ptr) && (NULL != src_ptr)) – >这是正确的

while (NULL != *src_ptr) – >这是错误的。

请仔细检查数据类型。 不要混淆variablepointer-to-variable variable pointer-to-variable