首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一道练习题,指点一下!该如何处理

2012-02-13 
一道练习题,指点一下!若有语句:chars1[] string ,s2[8],*s3,*s4 string2 则对库函数strcpy的错误调

一道练习题,指点一下!
若有语句: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长度不一定够大小.

热点排行