| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5622 人关注过本帖
标题:关于使用malloc函数动态申请内存空间的问题
只看楼主 加入收藏
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:21 
关于使用malloc函数动态申请内存空间的问题
先放代码再说好描述
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void loopinput(void);
char * findstr(char *,char *);

int main(void)
{
    loopinput();
    return 0;
}

void loopinput(void)
{
    char str1[50],str2[50];
    char * p;
    printf("please input two strings.\n");
    while( scanf("%s %s",str1,str2)==2 )
    {
        char fchr;
        getchar();
        p=findstr(str1,str2);
        printf("p=%s\n",p);
        printf("input y to continue,anther word to quit.\n");
        fchr=getchar();
        if(fchr!='y')
            break;
        printf("please input two strings.\n");
    }
}
char * findstr(char * str1,char * str2)
{
    int i;
    bool flag=false;
    int len1=strlen(str1);
    int len2=strlen(str2);
    char * pc;
    pc=(char *)malloc((len1)*sizeof(char));
    if(pc==NULL)
        exit(-1);
    for(i=0;i<len2-len1+1;i++)
    {
        strncpy(pc,str2+i,len1);
        pc[len1]='\0';
        if( strcmp(str1,pc)==0 )
        {
            flag=true;
            break;
        }
    }
    if(flag==true)
        return pc;
    else
        return NULL;
}
这是一个查找字符串的函数
输入第一参数指定的字符串 并在第二个参数指定的字符串中查找
查找到返回指针 未找到返回空指针
代码中我使用malloc函数申请strlen(str1)*sizeof(char)个内存空间
但实际中会多出许多内存空间
而这些未初始化的多余的内存空间将导致不能正常判断pc与str1是否相等
因此我使用了pc[len1]='\0' 这种无奈的方法

我想问问为什么malloc函数申请的空间大小和我期望的不一样
还有我这个函数没有释放pc 不知道在什么地方是否
搜索更多相关主题的帖子: 空间 内存 动态 
2013-04-01 14:18
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
收藏
得分:0 
严肃的问题描述完了 水一水让帖子浮上去
求大神解答!!
2013-04-01 14:20
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
收藏
得分:0 
这只是一个题目
实际中查找字符串可以用 strstr(char *,char *)函数
2013-04-01 14:22
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
收藏
得分:0 
严肃的问题描述完了 水一水让帖子浮上去
求大神解答!!
2013-04-01 14:23
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
收藏
得分:0 
木有人解答啊
2013-04-01 14:29
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
收藏
得分:0 
内容不能为空。。。
2013-04-01 14:33
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
收藏
得分:0 
我把性别改成妹纸会有人回复么
2013-04-01 14:38
yangzexun24
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2010-12-15
收藏
得分:0 
来个人解答下吧。。。
2013-04-01 15:20
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
楼主好搞笑


[fly]存在即是合理[/fly]
2013-04-01 15:27
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
假设字符串长度为 3,申请 3个空间就够了么,‘\0’可没有算到字符串长度里面

既然楼主知道用 strncpy和strcmp,为什么不用 strncmp?


[fly]存在即是合理[/fly]
2013-04-01 15:30
快速回复:关于使用malloc函数动态申请内存空间的问题
数据加载中...
 
   



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

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