主题:字符指针与数组求教
刚学C语言,关于指针这一块有点不明白。希望各位大哥帮帮忙
问题1:
char a[]="I love you!"和char a[]={"I love you!"}有啥区别?
问题2:
将字符串a连拦到字符串b后面。
a="I am a boy."
b="I love you "
要实现的结果为:I love you I am a boy.
正确代码如下:
void main()
{
void strcate(char *from,char *to);
char a[]="I am a boy.",b[25]="I love u ",*p1,*p2;
p1=a;p2=b;
strcate(p1,p2);
printf("string a is:%s\n",p1);
printf("string b is:%s\n",p2);
system("pause");
}
void strcate(char *from,char *to)
{
while(*to != '\0')
{
*to ++;
}
while(*from != '\0')
{
*to ++ = *from++;
}
*to='\0';
}
错误代码如下:
void main()
{
void strcate(char *from,char *to);
char a[]="I am a boy.",b[25]="I love u ",*p1,*p2;
p1=a;p2=b;
strcate(p1,p2);
printf("string a is:%s\n",p1);
printf("string b is:%s\n",p2);
system("pause");
}
void strcate(char *from,char *to)
{
for (;*from!='\0';from++)
{
for (;*to!='\0';to++)
{
if (*to=='\0')
{
*to=*from;
break;
}
}
*(to+1)='\0';
}
}
错误原因是,当第二个FOR循环到to='\0'时IF语句不执行。
正确的与错误的代码,思路都是让to指针指向的地址的值等于\0时,把from指向的地址的值赋值给to
为什么FOR的就不能成功?求高人帮忙~
问题1:
char a[]="I love you!"和char a[]={"I love you!"}有啥区别?
问题2:
将字符串a连拦到字符串b后面。
a="I am a boy."
b="I love you "
要实现的结果为:I love you I am a boy.
正确代码如下:
void main()
{
void strcate(char *from,char *to);
char a[]="I am a boy.",b[25]="I love u ",*p1,*p2;
p1=a;p2=b;
strcate(p1,p2);
printf("string a is:%s\n",p1);
printf("string b is:%s\n",p2);
system("pause");
}
void strcate(char *from,char *to)
{
while(*to != '\0')
{
*to ++;
}
while(*from != '\0')
{
*to ++ = *from++;
}
*to='\0';
}
错误代码如下:
void main()
{
void strcate(char *from,char *to);
char a[]="I am a boy.",b[25]="I love u ",*p1,*p2;
p1=a;p2=b;
strcate(p1,p2);
printf("string a is:%s\n",p1);
printf("string b is:%s\n",p2);
system("pause");
}
void strcate(char *from,char *to)
{
for (;*from!='\0';from++)
{
for (;*to!='\0';to++)
{
if (*to=='\0')
{
*to=*from;
break;
}
}
*(to+1)='\0';
}
}
错误原因是,当第二个FOR循环到to='\0'时IF语句不执行。
正确的与错误的代码,思路都是让to指针指向的地址的值等于\0时,把from指向的地址的值赋值给to
为什么FOR的就不能成功?求高人帮忙~