以下不能将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不能实现字符串的复制。
字符串复制
最新推荐文章于 2022-04-25 08:26:18 发布