分类：电脑/网络-程序设计
问题：我的C++程序在删除的时候出错。。帮我看看//串子结构.cpp: 
// 串子结构. : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;#include <stdio.h>#define max 80typedef struct{char ch[max];int len;}seqstring;seqstring S,T1,T2,T;seqstring inputstr(seqstring T)                /*输入字符串*/ { int i// 串子结构. : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;#include <stdio.h>#define max 80typedef struct{char ch[max];int len;}seqstring;seqstring S,T1,T2,T;seqstring inputstr(seqstring T)                /*输入字符串*/ { int i;   T.len=0;   printf("请输入字符串:\n");   gets( );   for(i=0; [i]!='\0';i++)    T.len++;   return T;  } void outputstr(seqstring T)      /*输出字符串*/  { puts( );    }seqstring concat(seqstring T,seqstring T1,seqstring T2) /*联接字符串*/{int i,n=max-1; if(T1.len+T2.len<n) /* 第一种情况*/    {    for(i=0;i<T1.len;i++)        [i]= [i];     for(i=0;i<T2.len;i++)        [T1.len+i]= [i];       T.len=T1.len+T2.len;        [T.len]='\0';    } else if(T1.len<n) //第二种情况   {     for(i=0;i<T1.len;i++)       [i]= [i];   for(i=0;T1.len+i<n;i++)       [T1.len+i]= [i];    [n]='\0';      T.len=T1.len+i;   } else  {    for(i=0;i<n;i++) //第三种情况         [i]= [i];          [n]='\0';         T.len=n;  }return T;}seqstring insstr(seqstring S,int i,seqstring T)  /*插入字符串*/  {int j;  if(T.len<=0)    {    printf("字符串为空!\n");     return S;    }  else if((i<=0)||(i>S.len+1))    {    printf("插入位置有错误!\n");      return S;    }  else if (S.len+T.len>=max)    {    printf("插入串太长!\n");      return S;    }  else    {    for (j=S.len;j>=i-1;j--)      {        [j+T.len]= [j];        [j]='\0'; }     for(j=0;j<T.len;j++)        [i+j-1]= [j];       S.len=S.len+T.len;       puts( );     return S;     }}seqstring delstr(seqstring S,int i,int len)   /*删除字符串*/  {int j;   if(i>=S.len)      {printf("删除串的位置不合理!\n");       return S;      }  else if(i+len-1>S.len)     {     printf("删除的串长值太大!\n");      return S;     }  else    {    j=i;     while( [j-1+len]!='\0')       {  [j-1]= [j-1+len];   j++;       }     S.len=S.len-len;      [S.len]='\0';     puts( );    }}int lenstr(seqstring T)                      /*求字符串长度*/ { return (T.len);  }//int equalstr(seqstring T1,seqstring T2)  /*判字符串是否相等*//*{int i=0; if(T1.len!=T2.len)    return(0); else   for(i=0;i<T1.len;i++)     if ( [i]!= [i])     return(0);     else     return(1);}*/  seqstring scopy(seqstring T1,seqstring T2,seqstring T)  //**函数复制{  int i;  for(i=0;i<T1.len;i++)        [i]= [i];     for(i=0;i<T2.len;i++)               //  [T1.len+i]= [i];      //strcpy(T1.len,T2.len);      T1.len=T2.len ;      [T.len]='\0'; return T;}int _tmain(int argc, _TCHAR* argv[])                               /*主函数*/{ int i=0,j=1,len=0;  int YY;  S.len=0;  T1.len=0;  T2.len=0; while(j)   {cout<<"\t\t\t            串子系统"<<endl;    cout<<"\n\t\t**********************************"<<endl;    cout<<"\n\t\t*          2------求串长              *"<<
回答：delstr 常态下没有返回。最后应加一句 return S;
另外，你的编程思维似乎还是停留在面向过程的编程上面，而没有转向面向对象 -:)