| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:请教:关于strcpy函数的问题
只看楼主 加入收藏
zyuce
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2012-11-25
结帖率:100%
收藏
 问题点数:0 回复次数:8 
请教:关于strcpy函数的问题
以下代码中  我认为输出的out应该是kingKINGasgam
但结果却是kingKING
然后我又输出out[10]竟然是g
这是为什么。。
我把change2函数换成strcpy  结果一样

程序代码:
#include<stdio.h>
#include<string.h>
void change(char*,char*);
void change2(char*,char*);
int main()
{
    char *p="kingKING";
    char out[]="asdgasfgasgam";
    printf("%c\n\n",out[10]);
    change2(out,p);
    printf("%s\n\n",out);
    printf("%c\n\n\n",out[10]);
    return 0;
}


void change2(char *a1,char *a2)
{
    while(((*a1++)=(*a2++))!=0);
}
2012-12-14 16:33
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
== 我看下先
2012-12-14 16:40
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
你的子函数写的不对
2012-12-14 16:43
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
简单的调试了一下  和我预料的一样

请问楼主 有啥不对的地方吗  或者应该打印出什么呢

DO IT YOURSELF !
2012-12-14 16:47
bulubulukaka
Rank: 2
等 级:论坛游民
帖 子:19
专家分:40
注 册:2012-12-5
收藏
得分:0 
你change2函数拷贝的时候是先把a2赋值给了a1,然后再把结果和0比较。这样的结果就是,你把字符串常量末尾的0付给了out。当然输出到了kingKING之后就没有了。
你数组out依然存在,只是内容换成了[k][i][n][g][K][I][N][G][0][s][g][a][m]。out[10]当然就是g啊!
不过,你的目的是想要啥子样的结果?
2012-12-14 16:51
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
其实你那个程序是实现了strcpy函数的效果
下面就是你要的效果?
图片附件: 游客没有浏览图片的权限,请 登录注册

小小战士,战士中的战斗机!
2012-12-14 17:09
zyuce
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2012-11-25
收藏
得分:0 
回复 5楼 bulubulukaka
嗯谢谢!我只是想弄明白为什么是这结果,现在懂了  谢谢!
2012-12-14 17:30
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
记得下次放分哦

DO IT YOURSELF !
2012-12-14 19:19
a151141
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:197
专家分:680
注 册:2012-10-19
收藏
得分:0 
这是因为while(((*a1++)=(*a2++))!=0);这一语句
先将*a2++赋值给*a1++;
k到G相信不用我跟你分析了。
到G后,a2自加,这是a2指向字符结束标志'\0';
然后将'\0'赋值给a1所指向的存储空间,也就是out[8];所以你输出字符串out时,到out[8]就结束了,只输出kingKING.
out[9]及其以后没变。所以out[10]会输出g.
明白了吧



世界上幸福的事就是抓到一只羊,更幸福的事就是抓到两只羊……
2012-12-14 23:46
快速回复:请教:关于strcpy函数的问题
数据加载中...
 
   



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

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