#include <stdlib.h>
char *substr(const char *s,int n1,int n2)/*从s中提取下标为n1~n2的字符组成一个新字符串,然后返回这个新串的首地址*/
{
char *sp=malloc(sizeof(char)*(n2-n1+2))
int i,j=0
for (i=n1i<=n2i++) {
sp[j++]=s[i]
}
sp[j]=0
return sp
}
int main(void)
{
char s[80],*sub
scanf("%s",s)/*输入原字符串s*/
sub=substr(s,0,5)/*提取s[0]~s[5]元素组成新子串,并保存到sub中*/
printf("substr:%s\n",sub)/*输出sub*/
free(sub)/*释放sub所占用的空间*/
return 0
}
#include <stdio.h>#include <stdlib.h>
#include <string.h>
char *sub(char *s,int st,int len)
{char *s1
int i
s1=(char*)malloc(len)
for(i=0i<leni++)s1[i]=s[st+i-1]
s1[i]='\0'
return s1
}
int main()
{int n,i,j
char s[200]
scanf("%d%*c",&n)
while(n--)
{printf("input a string:")
gets(s)
printf("i=")
scanf("%d",&i)
printf("j=")
scanf("%d%*c",&j)
if(i+j>strlen(s))printf("Error\n")
else printf("%s\n",sub(s,i,j))
}
return 0
}