| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2248 人关注过本帖
标题:[讨论]关于字符数组的长度定义.
只看楼主 加入收藏
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用论坛在2006-5-6 15:56:00的发言:
printf("%s",strcpy(str1,str2,2));


我晕,把最后的2去掉

谭书上说的,可以用strcpy将字符串2中前面若干个字符复制到另一字符数组中去. 例如:
strcpy(str1, str2, 2);
作用是将str2中前面2个字符复制到str1中去,然后再加上一个'\0'.

2006-05-06 16:00
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用论坛在2006-5-6 15:49:00的发言:
没事,用吧,野指针,没事,什么时候你系统报废了你就知道是怎么回事了

为何会导致系统报废??

2006-05-06 16:01
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用xsimon在2006-5-6 15:54:00的发言:
#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};

printf("%s",strcpy(str1,str2,2));
}

运行的结果仍然是ShenZhen,而不是只复制str2中的前两个字符"Sh". 为什么?

您是不是弄错了,您是要用memcpy(str1,str2,2);这个函数吧,
但即便您用了这个函数,也只是把China --等的字符串的前两个换成Sh而已
并不改变后面的字符,即变为Shina GuangDong而已.
另外回复上上楼的,您在printf (stract());的时候,空间是由系统开辟的,虽是不可知的,但是安全的,当然就没问题了,这就同char *p="sting";一样,是没问题的.
但str3[10]这越界了,地址无法预料,故而是危险的!


对不礼貌的女生收钱......
2006-05-06 16:04
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
谭的书不要相信太多,他老人家的水平是比咱们强,但有时候难免失误

对不礼貌的女生收钱......
2006-05-06 16:06
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
我都说了潭书是垃圾,你不信会后悔的

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-06 16:10
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用soft_wind在2006-5-6 16:04:00的发言:

您是不是弄错了,您是要用memcpy(str1,str2,2);这个函数吧,
但即便您用了这个函数,也只是把China --等的字符串的前两个换成Sh而已
并不改变后面的字符,即变为Shina GuangDong而已.
另外回复上上楼的,您在printf (stract());的时候,空间是由系统开辟的,虽是不可知的,但是安全的,当然就没问题了,这就同char *p="sting";一样,是没问题的.
但str3[10]这越界了,地址无法预料,故而是危险的!

书上确实是strcpy (P137).不是memcpy. 看来又是老谭的书有问题. 谢谢.

2006-05-06 16:11
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
以下是引用论坛在2006-5-6 15:51:00的发言:

#include "stdio.h"
main()
{
char str1[20]={"China GuangDong "};
char str2[10]={"ShenZhen"};
char str3[10];
str3[10]=strcat(str1,str2);
printf("%s",str3[10]);
}

printf("%s",str3[10]);
这打印什么呢

China GuangDong ShenZhen


你打印了吗


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-06 16:13
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
以下是引用xsimon在2006-5-6 16:11:00的发言:

书上确实是strcpy (P137).不是memcpy. 看来又是老谭的书有问题. 谢谢.

书上少了个字符,是strncpy而不是strcpy


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-06 16:15
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
收藏
得分:0 
以下是引用论坛在2006-5-6 16:10:00的发言:
我都说了潭书是垃圾,你不信会后悔的

刚学C,他的书还是不错的. 看完他的这本,再看看英文版的<The_C_Programming_Language> and <C primer plus> 比较一下. 不知道大家认为<Expert C Programming>这本书怎么样?

2006-05-06 16:15
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
The_C_Programming_Language>


直接就来它,其他没用

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-06 16:16
快速回复:[讨论]关于字符数组的长度定义.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020872 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved