急求一道C语言指针题的解答

来源:百度知道 编辑:UC知道 时间:2024/07/02 23:50:54
编写一取字符串的函char* substr(char* int startloc,int len),其中S为字符串,startloc为起始位置(0表示一个字符的位置),len为子串长度。要求返回值为求得的子串。如调用substr("12345678",0,4)求得子串为"1234".
本人初学,修改有困难,不要给有错的程序我。

VC环境下运行过的

#include<stdio.h>
#include<malloc.h>
char* substr(char* s,int startloc,int len)
{
char* s2;
int i;

s2=(char*)malloc(20*sizeof(char));
for(i=0;i<len;i++)
s2[i]=s[i+startloc];
s2[i]='\0';
return(s2);
}
void main()
{
printf("%s\n",substr("123456648",0,4));
}

#include<stdio.h>
#define N 50
char* substr(char* s,int startloc,int len){ //求子串
char* sub=new char[N];
char*p,*q;
int length=0; //记录原串长
p=q=s;
while(*p++!='\0'){
length++;
if(length==startloc)
q=p;
}
if(length-startloc+1<len){
printf("要求的子串超出原串长度范围!\n");
return 0;
}
int i=0;
while(i<len){
sub[i]=s[i+startloc];
i++;
}
sub[i]='\0';
return sub;
}