|  | 
 
| 
#include<stdio.h>
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 void main()
 {
 void copy_string(char *p,char *q);
 char *a="hello";
 char b[20]="hi";
 printf("a is:%s\n",a);
 printf("b is:%s\n",b);
 copy_string(a,b);
 printf("copy result is:\n");
 printf("a is:%s\n",a);
 printf("b is:%s\n",b);
 }
 void copy_string(char *p,char *q)
 {
 int i=0;
 for(i=0;*p!='0';i++)
 {
 *p=*q;
 p++;
 q++;
 
 }
 *q='\0';
 }
 
 本帖最后由 jackz007 于 2019-10-15 18:24 编辑 
        copy_string(char * p , char * q)  代码存在重大错误,通过赋值关系 * p = * q 看,应该 q 是源指针,可是,在循环中,判断继续的条件却是 * p != '0',明显是把 p 当成源指针了。而且,还是错误表达,因为空字符并不是 '0',而是 '\0' 。 
        我把代码优化了一下,楼主可以参考:
 复制代码#include<stdio.h>
void copy_string(char * p , const char * q)
{
        for(; * q != '\0';) * p ++ = * q ++ ;
        * p = '\0'                          ;
}
int main()
{
        const char * a = "hello"     ;
        char b[20]="hi"              ;
        printf("a is : %s\n" , a)    ;
        printf("b is : %s\n" , b)    ;
        copy_string(b , a)           ;
        printf("copy result is :\n") ;
        printf("a is : %s\n" , a)    ;
        printf("b is : %s\n" , b)    ;
}
 | 
 |