读书人

帮小弟我看上这段代码输出什么

发布时间: 2013-03-21 10:08:17 作者: rapoo

帮我看下这段代码输出什么


#include <iostream>
using namespace std ;
int main()
{
char a[] = "123" ;
char b[] = "123456789" ;
strcpy(a, b) ;
printf("%s, %s", a, b) ;
system("pause") ;
return 0 ;

}

能帮我解释下吗
[解决办法]
会输出:123456789, 123456789 但是程序出现字符数组a溢出 ,字符数组a[]长度为4,而字符数组b[]长度为10,把b中数据给a必定溢出
[解决办法]
strcpy(a, b)的时候由于a的空间小于b的长度,会导致数组写入越界,结果不可预料,应该改为char a[81] = "123",预先留好足够的空间。
[解决办法]
少用strcpy已经是过时的方法了,编译都会出警告
[解决办法]
a数组越界,b正常,越界的后果未定义,也许程序崩溃(我测试时就这样),也许没有,知道这样操作是不可以的就行了,没必要以编译器的输出结果来纠结对错
[解决办法]
"123456789" "456789"
我觉得是上面这样,strcpy直到遇见'\0'才结束,a直接越界;打印%s也是遇见‘\0’结束
[解决办法]
123456789, 123456789


strcpy()函数

a数组溢出

读书人网 >C++

热点推荐