回 帖 发 新 帖 刷新版面

主题:串的基本操作

为什么没结果啊

#include<iostream.h>
#define maxlen 100
typedef struct
{
    char ch[maxlen];
    int len;
}seqstring;
int strinsert(seqstring *s,int pos,seqstring *t)    //串的插入
{
    int i;
    if(pos<0||pos>s->len+1) 
        return 0;
    if(s->len+t->len<maxlen)
    {
        for(i=s->len+t->len+1;i>t->len+pos;i--)
            s->ch[i]=s->ch[i-t->len-1];
        for(i=0;i<=t->len;i++)
            s->ch[i+pos]=t->ch[i];
        s->len=s->len+t->len+1;
    }
    else
    {
        if(pos+t->len<=maxlen)
        {
            for(i=maxlen-1;i>t->len+pos;i--)
                s->ch[i]=s->ch[i-t->len-1];
            for(i=0;i<t->len;i++)
                s->ch[i+pos]=t->ch[i];
            s->len=maxlen-1;
        }
        else
        {
            for(i=0;i<maxlen-pos;i++)
                s->ch[i+pos]=t->ch[i];
            s->len=maxlen-1;
        }
    }
    return 1;
}
int strdelete(seqstring *s,int pos,int len)   //串的删除
{
    int i;
    if(pos<0||pos>(s->len-len))
        return 0;
    for(i=pos+len;i<=s->len;i++)
        s->ch[i-len]=s->ch[i];
    s->len=s->len-len;
    return 1;
}
void main()
{
    seqstring x={"I am a student"};
    seqstring y={"me too"};
    strinsert(&x,14,&y);
    for(int i=0;i<x.len;i--)
    {
        cout<<x.ch[i];
    }
    
}

回复列表 (共3个回复)

沙发

当然没有结果.
我不明白你是否是想seqstring x来创建一个对象. 你seqstring x={"I am a student"}; 这个语句结果
x.len 的值是 0 ,strinsert 时就直接if(pos<0||pos>s->len+1)  return 0; 了.
再检查以下程序把,单步跟踪调试一下很容易发现问题点的.
 

板凳


恩 谢谢楼上的
能不能告诉我这样实现单步跟踪啊

3 楼

先设置个断点,然后F5 运行,然后 每按 F10  一次走一步!

我来回复

您尚未登录,请登录后再回复。点此登录或注册