代码运行错误,求指导
#include<stdio.h>void main()
{
void copy_string(char *p,char *q);
char *a="hello";
char b="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';
} p q顺序别搞错 了。
如你代码中 只能做 字符串a copy 到 数组b 中; 反过来 copy 是不行的。
#include<stdio.h>
void main()
{
void copy_string(char *a,char *b);
char *a="hello";
char b="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 *a, char *b)
{
int i=0;
for (i=0; *a != '\0'; i++)
{
*b = *a;
a++;
b++;
}
*b = '\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="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) ;
}
页:
[1]