VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1408|回复: 6

[交流] new创建内存

[复制链接]
19_avatar_middle
最佳答案
0 
在线会员 发表于 2020-10-5 15:43:47 | 显示全部楼层 |阅读模式
本帖最后由 VC-bigboss 于 2020-10-6 14:54 编辑

#include <iostream>
#include <string>
using namespace std;
char* get_same_string(char* p1, char* p2)
{
        int c = 0, count = 0, idx = 0;
        char* p = new char(0);

        for (int i = 0; *(p1 +i)!='\0'; i++)
        {
                for(int j = 0; *(p1 + j) != '\0'; j++)
                {
                        if (p1 == p2[j])
                        {
                                while (p1[i + c] == p2[j + c])
                                {
                                        c++;
                                        p[idx + c] = p1[i + c];
                                }
                                c = 0;

                        }
                }
        }
        return p;
}
int main()
{
        char a[] = "aabbcc", b[] = "kkbcyy";
        char* pt = get_same_string(a, b);
        cout << pt << endl;
        return 0;
}
输出相同部分字符串,结果是什么都不输出。有人知道哪里出问题了吗?




上一篇:运行结果怎么如此奇怪?
下一篇:海外大学C++入门课练习题: Queue, Class, Stack
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-10-6 19:21:54 | 显示全部楼层
本帖最后由 tony666 于 2020-10-6 19:31 编辑
VC-bigboss 发表于 2020-10-6 14:58
代码里是p1后面有[ i ] 这个没错,不知道为什么复制过来只显示p1了。又看了几遍代码,发现把c++放到下 ...


首先你这个目标就不明确 “输出相同部分字符串”  是只要AB中都存在就行,不考虑位置? 还是任意一个公共子串  ? 还是最长公共子串?

其次指出两个问题
1
    //char* p = new char(0);
    int maxLen = strlen(p1) > strlen(p2) ? (strlen(p1) + 1) : (strlen(p2) + 1);
    char* p = new char[maxLen];
    memset(p, 0, maxLen);
p原来只分配了1字节的空间

2.idx可能需要 ++



还有  遇到程序运行逻辑出问题的时候 推荐使用调试功能
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-10-6 11:32:43 | 显示全部楼层
if (p1 == p2[j]) 永远都不会返回true
19_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-10-6 14:58:44 | 显示全部楼层
本帖最后由 VC-bigboss 于 2020-10-6 15:30 编辑
tony666 发表于 2020-10-6 11:32
if (p1 == p2[j]) 永远都不会返回true


代码里是p1后面有[ i ] 这个没错,不知道为什么复制过来只显示p1了。又看了几遍代码,发现把c++放到下一行可以输出字符,虽然还是不能实现函数功能,不过可能是在p[0]内放入了空字符,导致输出一直为空。
19_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-10-6 19:49:38 | 显示全部楼层
tony666 发表于 2020-10-6 19:21
首先你这个目标就不明确 “输出相同部分字符串”  是只要AB中都存在就行,不考虑位置? 还是任意一个公 ...

感谢你的回复,受益匪浅。
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-10-6 20:49:51 | 显示全部楼层
VC-bigboss 发表于 2020-10-6 19:49
感谢你的回复,受益匪浅。

加油new创建内存
70_avatar_middle
最佳答案
49 
在线会员 发表于 2020-10-9 17:03:10 | 显示全部楼层
提问区有个一样的问题,你可以看看对你是否有帮助
https://www.cctry.com/thread-300368-1-1.html
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-6-10 19:05

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表