一道练习题,指点一下!
若有语句:char s1[]= "string ",s2[8],*s3,*s4= "string2 ";则对库函数strcpy的错误调用是_____
A)strcpy(s1, "string2 ");
B)strcpy(s4, "string1 ");
C)strcpy(s3, "string1 ");
D)strcpy(s1,s2);
我在DEV-C++里调式,只有B出现错误,可在TURBOC中都可以成功编绎,不过全是乱码,以下是我的程序,是不是哪里有错啊?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s1[]= "string ",s2[8],*s3,*s4= "string2 ";
printf ( "%c ",strcpy(s1, "string2 ")); //每次在这里换选项中的代码
system ( "pause ");
return 0;
}
[解决办法]
C)strcpy(s3, "string1 ");
D)strcpy(s1,s2);
这两个也能成功么?? C)里s3没分配空间..D)里s2没初始化
至于你说的B)因为s4是指向常量的指针,指向的内容是分配在常量区中的,是只读不能修改的.
[解决办法]
全有问题.
1.s1长度不够,被冲了.
2.写了数据区的内存.
3.向未分配的内存地址写数据.
4.s2内容未定,s1长度不一定够大小.