#include
#define max 10
typedef struct
{
char ch[max];
int length;
}sstring;
int substring(sstring &sub,sstring s,int pos,int length)
{
int i;
if(pos+length-1>s.length)
return -1;
for(i=pos;i
sub.ch[i-pos+1]=s.ch[i];
sub.length=length;
return 1;
}
int main()
{
sstring a;
sstring b;
gets(a.ch);
printf("%d\n",substring(b,a,3,2));
puts(b.ch);
return 0;
}
如果是要求实现的功能是:求子串。用Sub返回串S的第pos个字符起长度为len的子串。那代码需要修改一下,下面的例子将substring函数第二个参数结构a的字符数组的第3个元素起的2个字符的子串存储到第一个参数b的字符数组ch中,但不知道是不是你所问的那个要求,代码修改如下:
#include <stdio.h>
#include <string.h>
#define max 10
typedef struct
{
char ch[max];
int length;
}sstring;
int substring(sstring &sub,sstring s,int pos,int length)
{
int i;
if(pos+length-1>s.length)
return -1;
for(i=pos;i<pos+length;i++)
sub.ch[i-pos]=s.ch[i]; //sub结构的ch字符数组的第0个位置开始存储s结构的ch数组第pos位置的元素,往后依次存储length个元素
sub.ch[i-pos]='\0'; //给sub结构的ch字符数组后面增加空字符,形成一个字符串
sub.length=length;
return 1;
}
//https://ask.csdn.net/questions/7767563?spm=1005.2025.3001.5141
int main()
{
sstring a;
gets(a.ch);
a.length=strlen(a.ch);
sstring b;
printf("%d\n",substring(b,a,3,2));
puts(b.ch);
return 0;
}
该算法是求串中的子串