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

// 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';?上面写错了,不好意思!

HUWWW
浏览 238回答 3
3回答

九州编程

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

慕工程0101907

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

一只萌萌小番薯

0和'\0'是相等的0的asicc码值就是0x00
打开App,查看更多内容
随时随地看视频慕课网APP