以下不能将s所指字符串正确复制到t所指存储空间的是( )。

admin2020-10-26  39

问题 以下不能将s所指字符串正确复制到t所指存储空间的是(  )。

选项 A、do{*t++=*s++;}while(*s);
B、for(i=0;t=s;i++);
C、while(*t=*s){t++;s++;}
D、for(i=0,j=0;t[i++]=s[j++];);

答案A

解析 从语法上讲,选项B和选项D的执行是一样的,都是将字符s数组的元素逐一赋值给字符数组t的对应元素;要注意的是字符指针指向的是字符串的首字符地址,通过s++运算将其指向下一个字符。另外,在字符串的末尾系统会自动补加一个字符’\0’作为结束字符,所以若移动字符串指针至字符串结尾,其值将会是指向’\0’,在分支语句中可以作为条件表达式,其值为假。因此从语法上讲此四个选项都是正确的C语言语句,且对于正常字符串,执行结果都是正确的。如果字符串s是个空字符串,选项A也会进行1次复制动作,所以不正确。
转载请注明原文地址:https://kaotiyun.com/show/3R3p777K
0

最新回复(0)