免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3419 | 回复: 13
打印 上一主题 下一主题

[函数] strcpy的奇怪问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-03 17:30 |只看该作者 |倒序浏览
我在linux下用C编写一个程序,其中想用strcpy()函数将一个字符数组的值复制到一个指针数组(指向char类型),从而改变指针数组中第一个指针所指向的字符串....简述如下:
char *to[]={"one","two","three"};
char from[]="four"
strcpy(to[0],from);
我用上面的程序写了,编译可以顺利通过,但程序执行到strcpy(to,from)就自动退出,查了很多关开strcpy的资料均百思不得其解...
希望高手可以指点一下,谢谢!!

论坛徽章:
0
2 [报告]
发表于 2008-04-03 17:33 |只看该作者
只读。。。。

论坛徽章:
0
3 [报告]
发表于 2008-04-03 17:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2008-04-03 17:41 |只看该作者
char *to[]={"one","two","three"};
^^^^^^^^^^

《C专家编程》找答案。

论坛徽章:
0
5 [报告]
发表于 2008-04-03 17:53 |只看该作者
指针数组所指向的单元是只读吗?

论坛徽章:
0
6 [报告]
发表于 2008-04-03 18:06 |只看该作者
指针数组里边的值 是字符串“one”的地址 ,是只读的
你要是要复制 需要 to[0] = malloc(strlen("four") + 1);

论坛徽章:
0
7 [报告]
发表于 2008-04-03 18:37 |只看该作者
很感谢大家的及时回答....

我想改变字符指针数组指向的值,照ldy2534 所说的to[0] = malloc(strlen("four") + 1);,也是分配一个地址而已啊,可以改变它的值吗?

本人比较菜,请各位高手指教一下,谢谢...

论坛徽章:
0
8 [报告]
发表于 2008-04-03 20:10 |只看该作者

论坛徽章:
0
9 [报告]
发表于 2008-04-03 21:22 |只看该作者
原帖由 es1024 于 2008-4-3 18:37 发表
很感谢大家的及时回答....

我想改变字符指针数组指向的值,照ldy2534 所说的to[0] = malloc(strlen("four" + 1);,也是分配一个地址而已啊,可以改变它的值吗?

本人比较菜,请各位高手指教一下,谢谢...

其实这种问题几乎每个星期都可以看到好几次:wink:
首先char * p = “xxxxx”这类声明;一般来说编译器会在代码段的常量数据区中开辟一段空间给p,系统默认为只读的常量,用户是不能修改它的内容的。
而to[] 存放的是三个 p这种类型的指针;所以你要用to[0] = malloc(strlen("four" + 1);重新开辟一个空间,顺便把地址给to[0]。

论坛徽章:
0
10 [报告]
发表于 2008-04-03 22:13 |只看该作者
学习中..................
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP