| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 604 人关注过本帖
标题:各位来帮我看一下这个程序的错误,多谢了
只看楼主 加入收藏
hiwo
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2008-10-16
结帖率:55.56%
收藏
 问题点数:0 回复次数:7 
各位来帮我看一下这个程序的错误,多谢了
#include<stdio.h>
#include<assert.h>
void main()
{
    char *strcpy(char*, char *);
    char *s1="string";
    char *s2;
    strcpy(s2,s1);
    printf("%s\n",s2);
}

char *strcpy(char *to, char *from)
{
    char *address;
    assert((to!=NULL)&&(from!=NULL));

    address=to;
    while(*from++!='\0')
    {
        *to++=*from++;
    }
    *to='\0';
    return address;
}
编译一直无法通过,
搜索更多相关主题的帖子: return 
2011-03-07 22:54
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:0 
  while(*from++!='\0')
    {
        *to++=*from++;
    }
    *to='\0';

这部分有问题 我编译了你的程序 可以运行 但是结果打印出来的是:tig
而不是string

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2011-03-07 23:04
hiwo
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2008-10-16
收藏
得分:0 
回复 2楼 do8do8do8
你用什么编译的,我用的vc编译一直无法通过

2011-03-07 23:07
hiwo
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2008-10-16
收藏
得分:0 
以下是引用do8do8do8在2011-3-7 23:04:17的发言:

  while(*from++!='\0')
    {
        *to++=*from++;
    }
    *to='\0';

这部分有问题 我编译了你的程序 可以运行 但是结果打印出来的是:tig
而不是string
改成while(*from!='\0'),不知道行不行
2011-03-07 23:12
shuimenjian
Rank: 1
等 级:新手上路
帖 子:3
专家分:9
注 册:2009-11-7
收藏
得分:0 
#include<stdio.h>
#include<assert.h>
strcpy(char*, char *);
void main()
{
    char *s1="string";
    char s2[10];
    strcpy(s2,s1);
    printf("%s\n",s2);
}
strcpy(char *to, char *from)
{
    assert((to!=NULL)&&(from!=NULL));
    while(*from!='\0')
    {
        *to++=*from++;
    }
    *to='\0';
}
以上代码在VC6.0编译通过,且结果正确。
主要问题:1、原语句char *s2; 指针s2没有指向任何变量,往里面写数据要出错。
          2、while(*from++!='\0')应该改为while(*from!='\0'),当while执行一次时,from就指向后面一个地址了,所以会输出tig。
2011-03-07 23:15
扁呈
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-3-7
收藏
得分:0 
  strcpy(s2,s1);
 assert((to!=NULL)&&(from!=NULL));

2011-03-07 23:25
hiwo
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2008-10-16
收藏
得分:0 
回复 5楼 shuimenjian
我用的也是vc++6.0,复制了你的程序,编译无法通过
2011-03-07 23:26
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:0 
#include<stdio.h>
#include<assert.h>
void strcpy(char*, char *);//增加void返回
void main()
{
    char *s1="string";
    char s2[10];
    strcpy(s2,s1);
    printf("%s\n",s2);
}
void strcpy(char *to, char *from)
{
    assert((to!=NULL)&&(from!=NULL));
    while(*to++=*from++);
   
}
用这个试试,vc6调试通过

帮人《---》帮己
2011-03-08 11:26
快速回复:各位来帮我看一下这个程序的错误,多谢了
数据加载中...
 
   



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

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