问题 填空题

下列程序中的函数strcpy2 ()实现字符串两次复制,即将t所指字符串复制两次到s 所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为: efghefgh。请填空。
#include <stdio.h>
#include <string.h>
viod strcpy2(char *s,char *t)
char
while (*s++=t++);
s=______:
while(______=*p++);

main()
char str1[100]="abcd", str2[]="efgh";
strcpy2 (str1,str2); printf("%s\n",str1);

答案

参考答案:s-1
*s++

解析:评析:复制字符串就是将t串中的字符逐个放到s所指的对应单元中(包括’\0’),题目中定义两个指针指向对应的存储单元。while(*s++=*t++)实现将t中的字符串第一次复制到s中,但在字符串的复制中其结束符“\0”同样被复制到s中,根据最后s所指字符串为:efghefdl的结果可以得出需要将结束符去掉,所以使用“s=s-1”来将指针指向字符h,接下来进行二次复制,和第一次复制一样,通过指针的自增来进行字符的顺序复制,所以第二个空应该填*s++。

问答题 简答题
单项选择题