字符串复制

以下不能将s所指字符串正确复制到t所指存储空间的是( )。
A.do{*t++=*8++;}while(*s);
B.for(i=0;t[i]=s[i];i++);
C.while(*t=*s){t++;s++;}
D.for(i=0,j=0;t[i++]=s[j++];);
答案 C
[解析] 选项A中,"*t=*s"既完成字符的复制,又将当前复制字符的ASCII码作为循环条件。当s不断向后移动指向字符串结束标记'\0'时,将*s的值'\0'赋值给*t,'\0'的ASCII码等于0,条件判断为假跳出循环。选项B、D程序算法类似,也是把s指向的字符赋值到t指向的存储单元,并对该字符进行0和非0的判断,若等于字符'\0',则跳出循环。选项C中,使用了do…while循环,先执行循环体再进行条件判断。循环中先取出*s赋值给*t后,然后s和t分别自加1,指向下一个单元,最后再对*s的值进行判断,若此时*s等于'\0',则跳出循环,字符'\0'没有复制到t指向的存储单元中。所以选项C不能实现字符串的复制。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值