解题思路:定义两个字符数组a和b,用“I am a student.”对a数组初始化。将a数组中的字符逐个复制到b数组中。可以用不同的方法引用并输出字符数组元素,今用地址法算出各元素的值。
#include <stdio.h>
int main()
{char a[ ]="I am a student.",b[20];
int i;
for(i=0;*(a+i)!='\0';i++)
*(b+i)=*(a+i); //将a[i]的值赋给b[i]
*(b+i)='\0'; //在b数组的有效字符之后加'\n'
printf("string a is:%s\n",a); //输出a数组中全部字符
printf("string b is:");
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]); //逐个输出b数组中全部字符
printf("\n");
return 0;
}
用指针变量来处理例8.18问题。
解题思路:定义两个指针变量p1和p2,分别指向字符数组a和b。改变指针变量p1和p2的值,使它们顺序指向数组中的各元素,进行对应元素的复制。
#include <stdio.h>int main() {char a[]="I am a boy.",b[20],*p1,*p2; p1=a;p2=b; // p1,p2分别指向a数组和b数组中的第一个元素 for(;*p1!='\0';p1++,p2++) *p2=*p1; // 将p1所指向的元素的值赋给p2所指向的元素 *p2='\0'; // 在复制完全部有效字符后加'\0' printf("string a is:%s\n",a); // 输出a数组中的字符 printf("string b is:%s\n",b); // 输出b数组中的字符 return 0;}