标题:自己写的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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463976-1-1.html




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

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