有两个字符数组,将a数组中的元素拷贝到b数组中
下面的C的实现代码:
#include<>
void main()
{
char a[] = "I am a boy.", b[20], *p1, *p2;
p1 = a; p2 = b;
while(*p1)
{
*p2++ = *p1++;
//printf("p1 - a = %d ", p1 - a);
//printf("p2 - b = %d ", p2 - b);
//printf("\n");
}
*p2 = '\0';
printf("string a is: %s\n", a);
printf("string b is: ");
for(int i = 0; b[i] != '\0'; i++)
{
printf("%c", b[i]);
}
printf("\n");
//printf("%c, %c\n", a[0], a[10]);
//printf("%c, %c\n", b[0], b[10]);
}
/*
说明:
*p2++ = *p1++; 表示:
a: *p2 = *p1;
b: p2 ++;
c: p1 ++;
也就是说 *p2++ = *p1++; 代表了先后执行了a, b, c三个步骤。
while(*p != '\0') 因为 '\0' 可以用ASCII码0代替,就像a可以用97代替一样;while(*p != 0) 可写成while(*p)
而且代码中的第9行到19行也可以用 while((*p2++ = *p1++) != '\0');代替或者更加简便while(*p2++ = *p1++);
注意语句后面的分号“;”不可省略。分析同上。
*/