为什么选B?谁可以解释一下吗?

img

ps指向str第3个也就是one后面那个空格位置,
scanf("%s",ps);输入字符串将被空格或Tab或回车换行字符结束,所以输入two end将只取前3个字符two,
保存到one后空格开始的位置,并自动在末尾添加字符串结束符'\0'也就是0
printf("%s\\n",str);//输出onetwo\n
printf("%s\n",str);//输出onetwo换行

首先ps指向str数组的第3个元素地址,也就是空格字符地址
scanf("%s",ps)接收字符串,记录到str字符串中从空格开始的元素位置。%s接收字符串时,遇到空格、换行符、TAB键等会结束输入,所以输入two end时,实际只接收two。因此str内最终字符串为onetwo

str是长度为80的数组,ps指向了第三个元素’ ‘,或者说ps指向了子数组’ start‘
scanf会替换掉str中ps指向的东西,输入空格会截断所以two end只会有two,所以ps指向的地方以及其后面都会被替换掉