c语言:为什么 do{*t++=*s++;}while(*s); 无法复制'\0'?

 我来答
百度网友b0e28cae4
2011-03-04 · TA获得超过4016个赞
知道大有可为答主
回答量:1276
采纳率:85%
帮助的人:602万
展开全部
这个是在拷贝字符串吧。
首先要明确:【++ 自增运算符】的优先级大于 【* 取值运算符】
do{*t++=*s++;}while(*s); 相当于 : *t = *s; s++;t++;
当 *s='\0' 时, while 已经退出, *s 也就没法拷贝给 *t 了
干睿识r1
2011-03-04 · TA获得超过360个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:203万
展开全部
如果字符串s中放的是:abcd\0
....
那先将a放进去,看看b是不是\0
当把d放到t中时,就该while(*s)*s为\0 '\0'的ASCII码为0,,也就是while(0)
循环结束了,所以不行~
你需要手动补上:*t='\0';的一句~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奔跑666999
2011-03-04
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
C语言:复制函数是strcpy(目的字符数组名,源字符串)
注:其进行拷贝时,连同字符串后面的‘\0’一起拷到目的字符数组中!
希望对你有所帮助
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
用QQ名居然违规
2011-03-04 · TA获得超过1111个赞
知道小有建树答主
回答量:1057
采纳率:50%
帮助的人:480万
展开全部
\0
就是指asc码为0的NUll
while(0)是不执行的当然达不到要求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式