为了账号安全,请及时绑定邮箱和手机立即绑定

你好,请问代码倒数第四行中d[strlen(s)]=0;为什么要赋"0"?

你好,请问代码倒数第四行中d[strlen(s)]=0;为什么要赋"0"?

HUWWW 2022-03-17 15:11:47
// memcpy.c#include <syslib.h>#include <string.h>main(){char *s="Golden Global View";char d[20];clrscr();memcpy(d,s,strlen(s));d[strlen(s)]=0;printf("%s",d);getchar();return 0;}请问倒数第四行中d[strlen(s)]=0;为什么要赋"0"?为什么不是d[strlen(s)]='\0\;?为什么不是d[strlen(s)]='\0';?上面写错了,不好意思!
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

字符串*s是以结束符'\0'为结束的,而strlen为字符串的长度,但是不包括结束符。而printf函数中需要结束符,因此需要用d[strlen(s)]='\0’。可以在使用memcpy(d,s,strlen(s)+1).

查看完整回答
反对 回复 2022-03-23
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

由于d[]是char类型,如果按LZ的写法d[strlen(s)]='\0';是完全可以的,也是比较正规的写法,而d[strlen(s)]=0是把0做了(char)隐式转换后赋值给d[],本质上没有什么不同('\0'的ascii码值就是0),但是这样的写法很晦涩,不应该提倡.

查看完整回答
反对 回复 2022-03-23
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

0和'\0'是相等的
0的asicc码值就是0x00

查看完整回答
反对 回复 2022-03-23
  • 3 回答
  • 0 关注
  • 237 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号