|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
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) ;
- }
复制代码
|
|