下列程序中的函数strcpy2 ()实现字符串两次复制,即将t所指字符串复制两次到s 所指内存空间中,合并形成一个新字符串。例如,若t所指字符串为:efgh,调用strcpy2后,s所指字符串为: efghefgh。请填空。 #includ

admin2009-03-16  28

问题 下列程序中的函数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++。
转载请注明原文地址:https://kaotiyun.com/show/ZlXp777K
0

最新回复(0)