| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖
标题:刚接触C语言,有个基本的语法应用问题不懂。
只看楼主 加入收藏
zhongwawa198
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-5
收藏
 问题点数:0 回复次数:5 
刚接触C语言,有个基本的语法应用问题不懂。

教材上有这么个程序。
#include "stdio.h"
#include "string.h"
main()
{
char a[20]="abcde";
strcpy(&a[1],a);
puts(a);
我认为结果应该是aabcde,为什么出来的结果是aaaaaaa。

搜索更多相关主题的帖子: C语言 语法 include 应用 教材 
2007-07-05 10:03
danielliujp
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-11-30
收藏
得分:0 

这个,你就应该看看strcpy函数的功能了,或是它的用法说明,

跟语法没有什么关系的.


上有政策 下有对策
2007-07-05 11:39
zhongwawa198
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-5
收藏
得分:0 
回复:(zhongwawa198)刚接触C语言,有个基本的语法应...

像你们编程的时候,字符串的自我复制常见吗


临渊羡鱼,不如退而结网!
2007-07-05 16:24
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 

当复制的源地址和目标地址有覆盖发生时会有不可预料的结果
为了避免这种情况可以使用memmove
#include "stdio.h"
#include "string.h"

int main()
{
char a[20]="abcde";
memmove(&a[1],a,sizeof(a));
puts(a);
}

2007-07-05 16:50
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 

顺便说一下,你教材上的代码在我使用的gcc version 3.3.1和VC++6.0上的结果的确是你认为的。说明你编译器比较垃级

2007-07-05 17:00
zhongwawa198
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-7-5
收藏
得分:0 

楼上的,我在VC++6.0里面运行了一下,结果确是aabcdd,怎么回事,谢谢


临渊羡鱼,不如退而结网!
2007-07-12 13:19
快速回复:刚接触C语言,有个基本的语法应用问题不懂。
数据加载中...
 
   



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

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