| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1465 人关注过本帖
标题:自己写的strcpy函数,编译结果不准确,求指教
只看楼主 加入收藏
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
结帖率:92.86%
收藏
已结贴  问题点数:10 回复次数:4 
自己写的strcpy函数,编译结果不准确,求指教
#include<stdio.h>
#include<string.h>
char hanshu(char *,char *,int);
main()
{
    char ch1[30],ch2[10];
    gets(ch2);
    hanshu(ch1,ch2,8);
    printf("%s",ch1);
    }
char hanshu(char *string1,char *string2,int n)
{
    char *temp=string1;
    while(n&&*string2!='\0')
       {
            *string1=*string2;
           string1++;
           string2++;
           n--;
           }
    if(n)
    {
        while(n)
           {
               *string1='\0';
              string1++;
              }
        }
     return temp;   
    }
编译通过,但是测试结果不准确,
2016-04-22 09:42
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
收藏
得分:4 
程序代码:
#include<stdio.h>
#include<string.h>
char hanshu(char *,char *,int);
main()
{
  char ch1[30],ch2[10];
  gets(ch2);
  hanshu(ch1,ch2,8);
  printf("%s",ch1);
}
char *hanshu(char *string1,const char *string2,int n)
{
  char *temp=string1;
  while(n&&*string2!='\0')
  {
    *string1=*string2;
    string1++;
    string2++;
    n--;
  }
  if(n)
  {
     while(n--)
     {
       *string1='\0';
       string1++;
     }
  }
  else
    *string1='\0';
  return temp;
}


[此贴子已经被作者于2016-4-22 10:14编辑过]


未佩好剑,转身便已是江湖
2016-04-22 10:13
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:4 
以下是引用屋顶在2016-4-22 09:42:51的发言:

#include
#include
char hanshu(char *,char *,int);
main()
{
    char ch1[30],ch2[10];
    gets(ch2);
    hanshu(ch1,ch2,8);
    printf("%s",ch1);
    }
char hanshu(char *string1,char *string2,int n)
{
    char *temp=string1; // 多余的代码,没用;
    while(n&&*string2!='\0') //改成  whiale(n!=0&&*string2!='\0')
       {
            *string1=*string2;
           string1++;
           string2++;
           n--;
           }
    /*if(n)
    {
        while(n)
           {
               *string1='\0';
              string1++;
              }
        } */  这些没用,改成*string1='\0';就好了。

     return temp;
    //返回0就好了。
    }
编译通过,但是测试结果不准确,
如果我是你的话,我就不会引用ch2的前n个字符作为循环的条件,而只用ch2!=‘\0’作为循环条件。这样才符合strcpy,你写的是属于ctrncpy的代码。
2016-04-22 10:34
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:4 
回复 3楼 linlulu001
while写错了笔误了吧
2016-04-22 13:19
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 4楼 wanglianyi1
谢谢提醒,确实写快了没看
2016-04-22 13:21
快速回复:自己写的strcpy函数,编译结果不准确,求指教
数据加载中...
 
   



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

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