例8.18 将字符串a复制为字符串b,然后输出字符串b。

时间:2021-01-01 22:16:04

解题思路:定义两个字符数组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;}