读书人

strcpy解决方法

发布时间: 2012-10-19 16:53:36 作者: rapoo

strcpy
int main()
{
char p[100];
strcpy(p,"hello world");
printf(p);
}
为什么仍然能够输出hello world
strcpy 不是要遇'\0'才结束拷贝么?

[解决办法]
"hello world"字符串常量:比字符常量相比较至少是多一个字符。字符常量"hell world"其实是占12个字节的内存,最后一个字节就是留给'\0'。
所以,字符常量是有'\0'并且是在最后。
[解决办法]
好吧 路过, 字符串和字符数组 是2码事
字符串是有'\0'结束的

"hello world"是个字符串常量

[解决办法]
在hello world后会自动加上一个‘\0’
[解决办法]

探讨
额,是我想错了。我以为只有 char *p= "abcd";的时候系统才会在后面加上一个'\0'。
而这种直接的strcpy(p,"hello world");即"hello world"的d后面是不加的。所以才有这种问题。

总结一句,就是字符常量(不管什么情况)后面都会自动加一个'\0'嘛?

[解决办法]
'\0'肉眼看不出来,只有打印才看的出来。
能看到的不是'\0'

我想lz是不是想问scanf(“%s”,str);
如果输入 hello world 只能得到hello。
要想得到hello world 要用gets

读书人网 >C语言

热点推荐