这里用了三种方法进行复制
1.地址法:
#include <stdio.h>
int main()
{
char a[]="I am a man";
char b[30];
int i;
for(i=0;*(a+i)!='\0';i++)
*(b+i)=*(a+i);
*(b+i)='\0'; //这里需要在数组末尾加上\0 切记。
printf("数组a为:%s\n",a);
printf("数组b为:"); //这里也可以使用逐条输出的方式。
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
printf("\n");
}
2.指针法:
#include <stdio.h>
int main()
{
char a[]="I am a man";
char b[30];
char *p1=a,*p2=b;
int i;
for(;*p1!='\0';p1++,p2++)
*p2=*p1;
*p2='\0';
printf("数组a为:%s\n",a);
printf("数组b为:");
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
}
//关于这个问题 我在想能否实现使用指针来输出 而不是这里b数组输出的方式 用i 需要讨论.......
3.指针函数法
//指针练习题:
//用函数调用将字符串a复制到字符串b.
#include<stdio.h>
int main()
{
void copy(char *from,char *to);
char *a="I am a student";
char b[]="I am a player.........";//这里也可以改写成为向上一条语句相同类型的,用指针直接指向该字符串的类型。
char *p=b;
printf("字符串a的内容为:%s\n",a);
printf("字符串b的内容物:%s\n",p);
copy(a,p);
printf("字符串a现在的内容为:%s\n",a);
printf("字符串b现在的内容为:%s\n",p);
}
void copy(char *from,char *to )
{
for(;*from!='\0';*from++,*to++)
*to=*from;
*to='\0';//这里的to='\0'的意义是为了防止字符串b的长度大于字符串a的时候 出现复制后的字符串不相同的情况
//测试得出 如果去掉*to='\0' 则字符串b中长度大于字符串a的部分不会发生改变,继续出现 。
}; //值得注意的是,如果这里采用逐个输入的话 则字符串b会出现'\o',而不会停止。