C初学者的困惑 求解决
#include <stdio.h>void main()
{
char a[]="我爱你!",b,*p1,*p2;
int i;
p1=a;
p2=b;
for(;*p1!='\0';p1++,p2++)
{
*p2=*p1;
}
*p2='\0';
printf("%s\n",a);
for(i=0;b!='\0';i++)
{
printf("%c",b);
}
printf("\n");
}
*p2='\0';
程序没问题但是不明白这是什么意思是执行完在进行赋值的吗?赋值以后不是改变了P2的值了吗? *p2='\0'; 字符串是以\0为结尾的,所以最后加上\0,你这个程序作用大致是将字符数组a的字符串拷贝到字符数组b,然后输出字符数组a和字符数组b *p2='\0';是为了给你的新字符串结尾;
因为在你复制的时候那个循环用的条件是*p1!='\0'
所以当*p1=='\0'的时候,循环已经不会进行了,也就没有对新字符串的最后一位加上结束符,
所以最后要加上一个'\0'; {:5_111:} 字符串要以00结尾 嗯谢谢
页:
[1]