里面的a[20]{'a','b','c','d'}为啥是20啊,是随便定的为了满足数组空间需求还是有别的道理,还有那个strcpy函数是怎么用的啊,看不懂啊
答:随便定的,满足最长的数据即可,strcpy有两个参数,第一个是目标地址,第二个就是数据,将数据放到目标地址,其中数据为q={'a','b','c','\0'}, 目标地址为p={'a','b','c','d','a','b','c','d','e','\0'},拷贝地址在原基础上加上了3,所以目标地址就覆盖了d后面的数据,拷贝过后结果是p={'a','b','c','a','b','c','\0''d','e'},字符串结尾为'\0',此时当计算函数到'\0'时就会结束计数。
#include <stdio.h>
//方便理解简单的写出库函数内部实现简单方法
//计算长度
int strlen_test(char* base)
{
int i;
for(i=0;base[i]!='\0';i++);//找到结束标志,计算出长度
return i;
}
//拷贝
void strcpy_test(char* base,char* data)
{
int i=strlen_test(data),j;//计算出数据长度
for(j=0;j<i;j++)//循环拷贝
{
base[j]=data[j];
}
base[j]='\0';
}
//字符拼接
void strcar_test(char* base,char* data)
{
//i,数据长度,k初始数据长度
int i=strlen_test(data),j,k=strlen_test(base);
for(j=0;j<i;j++)//循环拷贝
{
base[k+j]=data[j];
}
base[k+j]='\0';
}
int main(void)
{
char p[20]={},q[]="abc",r[]="abcde";
strcar_test(p,r);
strcpy_test(p+strlen_test(q),q);
printf("%d\n",strlen_test(p));
return 0;
}
20是数组空间长度,这里只是把空间定的大了而已没有其他意义,至于strcpy函数是把第二个参数复制给第一个参数
随便写的,不要转牛角尖