| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖
标题:做了一个函数,把第二个字符串覆盖第一个字符串,但是有问题。
只看楼主 加入收藏
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:7 
做了一个函数,把第二个字符串覆盖第一个字符串,但是有问题。
做了一个函数,把第二个字符串覆盖第一个字符串,但是有问题。如果第二个字符串比第一个长,那么输出结果后面有乱码。如果两个字符串一样长,那么只有第一个字符被覆盖。
程序代码:
#include <stdio.h>
#include <string.h>
#define SIZE 81
char *cpy (char *psx, char *psy);

int main (void)
{
    char str1[SIZE];
    char str2[SIZE];
    char* ps1;
    char* ps2;
   

    printf ("Enter firse string:\n");
    ps1 = gets (str1);
    printf ("Enter second string:\n");
    ps2 = gets (str2);
    cpy (ps1, ps2);
   

    puts (ps1);
   

    system ("pause");
    return 0;
}

char *cpy (char *psx, char *psy)
{
    int i = 0;
    if (strlen (psx) > strlen (psy))
    {
        while (psx[i] != '\0')
        {
            psx[i] = psy[i];
            i++;
        }
    }else if (strlen (psx) < strlen (psy))
    {
        while (psy[i] != '\0')
        {
            psx[i] = psy[i];
            i++;
        }
    }else
    {
        while (psx[i] != '\0')
        {
            psx[i] = psy[i];
            i++;
        }
    }
    return psx;
}



[此贴子已经被作者于2015-11-12 10:31编辑过]

搜索更多相关主题的帖子: 字符串 字符串 
2015-11-12 10:27
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
还有一个问题,notepadd++昨天更新的,我设置的默认语言是C,但是“另存为”的时候不会存成.c文件,而是无后缀的,怎么解决?
2015-11-12 10:29
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
说明白你的需求

怎么个覆盖法   a 覆盖abc  得到什么结果  得到a 还是 abc
               abc 覆盖abc 得到什么结果  abc???
               abcd 覆盖abc 得到什么结果  abc 还是abcd 还是???

DO IT YOURSELF !
2015-11-12 10:39
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
回复 3楼 wp231957
如果第一个输入“abc”,第二个字符串输入“123456”,输出“123456”加几个乱码。

如果第一个输入“123456”,第二个字符串输入“abc”,输出“abc”一切正常。

如果第一个输入“123”,第二个字符串输入“abc”,输出“a23”只有a覆盖了1,但是bc没有覆盖23。
2015-11-14 08:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
以下是引用ilsoviet1917在2015-11-14 08:27:56的发言:

如果第一个输入“abc”,第二个字符串输入“123456”,输出“123456”加几个乱码。

如果第一个输入“123456”,第二个字符串输入“abc”,输出“abc”一切正常。

如果第一个输入“123”,第二个字符串输入“abc”,输出“a23”只有a覆盖了1,但是bc没有覆盖23。

這是沒有考慮字符串結束標識符的現象

授人以渔,不授人以鱼。
2015-11-14 12:35
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
回复 5楼 TonyDeng
请问怎么改?
2015-11-14 16:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
重寫一個,不用那麽複雜,直接把第二個抄到第一個哪裏就可以了。

授人以渔,不授人以鱼。
2015-11-14 16:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用ilsoviet1917在2015-11-14 08:27:56的发言:

如果第一个输入“abc”,第二个字符串输入“123456”,输出“123456”加几个乱码。

如果第一个输入“123456”,第二个字符串输入“abc”,输出“abc”一切正常。

如果第一个输入“123”,第二个字符串输入“abc”,输出“a23”只有a覆盖了1,但是bc没有覆盖23。

你没有回答3楼的问题,3楼问的是你想要如何做才算正确,你回答的是你的做法是什么现象。
你对错误现象描述得再清楚,别人也无法知道你心目中的正确现象是什么。
2015-11-16 10:21
快速回复:做了一个函数,把第二个字符串覆盖第一个字符串,但是有问题。
数据加载中...
 
   



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

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