课程
/后端开发
/C
/C语言入门
第4个例子 strcat "hello "后面有一个空格 那么拼接后的"hello world"长度不是超过10了 ?
2015-06-08
源自:C语言入门 6-8
正在回答
可能是教材弄混了吧,用strlen()计算出来的长度确实是11。代码给你,你运行看看。
#include <stdio.h> #include <string.h> int main() { char s1[10]="hello "; char s2[]="world"; strcat(s1,s2); printf("%s\n",s1); printf("%d\n",strlen(s1)); return 0; }
JASON0000 提问者
“strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串”,实际发现s1空间不足也可以运行成功,其实已经内存越界了,如果在VC中运行调试即可看到报错,这里的编译器可能对越界访问做了特殊处理。
s1[10]这个数组是长度是11,下标是从0开始的。不要搞混了。
空格也算一个字符。
原来的s1也有空格啊。
char s1[10]="hello ";
跟s2拼接长度刚好是11啊。
Perona 回复 JASON0000 提问者
菠萝不困
举报
C语言入门视频教程,带你进入编程世界的必修课-C语言
4 回答strcat ???
2 回答strcat与strcpy
2 回答为什么strcat(s1,strcat(s2,s3));不行呢?
2 回答为什么strcat(s2,s3); strcat(s1,s2);不能这样写?
3 回答关于strcat和strcpy