C语言字符数组移位

时间:2025-04-15 13:12:42

有两个字符数组,将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++);
注意语句后面的分号“;”不可省略。分析同上。

*/