题目描述:
返回顺序串s中从第i(1《i《n)个字符开始的连续j个字符组成的子串。当参数不正确时返回一个空串
代码实例:
#include<stdio.h>
#include<string.h>
//定义一个结构体数组
typedef struct {
char data[6];//字符串12345一共5个数,为什么分配6个空间,原因是c语言中字符串后面自带一个/0多以多分配一个空间
int length;
}SqString;
//获取子串的函数
SqString SubStr(SqString s, int i, int j) {
int k = 0;
SqString str;
str.length = 0;//定义一个空串,长度为0
//不符合条件返回空串str
if(i<=0 || i>s.length || j<0 || i+j-1>s.length) {
return str;
}
//第一个数,它的下标是0,第二个数,它的下标是1,以此类推
for(k = i-1 ;k<i+j-1;k++) {
str.data[k-i+1] = s.data[k];
}
str.length = j;
str.data[str.length] = '\0';//如果没有这行代码,就会有乱码的情况出现。字符串都是以\0结尾
return str;
}
void main() {
SqString s = {"12345",5};
s.length = 5;
s = SubStr(s,1,3);
printf("%s",s.data);
}