有两个字符数组,将a数组中的元素拷贝到b数组中
下面的C的实现代码:
- #include<stdio.h>
- 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++);
- 注意语句后面的分号“;”不可省略。分析同上。
- */