| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 712 人关注过本帖
标题:初学数据结构,简单的模式匹配,在使用上strlen时出现了一个内存错误,求各 ...
只看楼主 加入收藏
tzr573796771
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-9-24
结帖率:100%
收藏
 问题点数:0 回复次数:1 
初学数据结构,简单的模式匹配,在使用上strlen时出现了一个内存错误,求各位帮我解决一下到底是怎么回事啊!谢谢
#include "stdio.h"
#include "string.h"

/*void Get_next(char s[],int next)      //求模串s的next函数以及得到next数组
{
    int i,k,slen;
    slen=strlen(s);
    i=1;next[1]=0;k=0;
    while(i<=slen)
    {
        if(k==0 || s[i]==s[k])
        {
            i++;
            j++;
            next[i]=k;
        }
        else
            k=next[k];
    }
}*/

int Index(char s[],char p[],int pos)//简单的模式匹配方法
{
    int i=pos,j=0,slen,plen;
    slen=strlen(s); //这老是报内存错误
    plen=strlen(p);
    while(i<slen || j<plen)
    {
        if(s[i]==p[j])
        {
            i++;
            j++;
        }
        else
        {
            i=i-j+1;
            j=0;
        }
    }
    if(j>plen)
    {
        return 1;
    }
    else
        return 0;
}

void main()
{
    char *s,*p;
    int index;
    printf("Enter s:\n");
    scanf("%s",&s);
    printf("Enter p:\n");
    scanf("%s",&p);

    index=Index(s,p,3);
    if(index==1)
    {
        printf("successed!\n");
    }
    else
        printf("falure!\n");
}

 刚学数据结构,在调试的时候slen=strlen(s); plen=strlen(p);//这老是报内存错误,是怎么回事啊??
搜索更多相关主题的帖子: 初学 模式 strlen 内存 数据结构 
2009-10-13 11:14
y2k_connect
Rank: 2
等 级:论坛游民
威 望:1
帖 子:15
专家分:61
注 册:2009-10-4
收藏
得分:0 
问题源头,在main()中。
scanf("%s", &s);有问题。s初始值未设置。

void main() {
    char arr[2][128];
    ... ...
    s = arr[0];
    p = arr[1];
    printf("Enter s:\n");
    ... ...
}

2009-10-21 20:34
快速回复:初学数据结构,简单的模式匹配,在使用上strlen时出现了一个内存错误, ...
数据加载中...
 
   



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

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