3 回答
TA贡献1784条经验 获得超9个赞
strcpy(char a*, char b*)的作用,简单讲就是给你两个内存起始地址(你可以将它们想象成给了你两排箱子,每个箱子都有编号,比如第一排的编号是0,1,2,3,4,第二排的编号是7,8,9,则a,b分别就是这两排箱子的起始编号),将以b开始的内存地址中的数据复制到以a开始的内存地址中(就是将箱子7中的东西复制到箱子0,将箱子8中的东西复制到箱子1,...)。因为a要容纳b的所有数据,所以分配给a的内存数量必须大于等于分配给b的内存数量(大于意味着a的内存没装满,有富余空间),即第一排箱子的数量要大于第二排的。
具体到你的问题,箱子的数量就是分配给数组或字符指针的内存字节数。str1和str4都分配了9个字节,因为把字符串分配给char数组(数组的大小没由你显式指定时才这样)或char指针时,会比字符串的实际长度多分配1个字节,以容纳'\0'字符,str2是8个字节(8是显式指定的),而str3一个字节也没分配,所以不能把"HELL03"复制给str3,因为要装下"HELL03",需要至少7个字节('\0'也要一个字节)。
TA贡献1858条经验 获得超8个赞
strcpy(char *, char *)函数表示将第二个参数开始的字符串拷贝到第一个参数的字符串位置。故strcpy (a+1, b+2) 表示将b[2]开始的字符串复制到a[1]开始的字符串中,即a数组变为“a2”。 strcat(char *, char *)函数表示将第二个参数开始的字符串接到第一个参数开始的字符串上,返回第一个字符串的指针。故strcat(a,c+1)表示将c[1]开始的字符串接到“a2”后面,a数组变成“a2yz”。
添加回答
举报