返回函数中的子字符串(c)

时间:2013-09-23 08:56:43

标签: c string char

我不知道为什么以下方法不起作用.main方法中的printf函数不输出子字符串“love”。我只是在函数内部分配一个char *并在返回值中返回它

#include<stdio.h>
#include<stdlib.h>

char *sub_str(char* str,int start,int end) {
//return  substring from pos start to end(included)
   char *a=str;
   char *s=(char*)malloc((end-start+1)*sizeof(char));
   for(int i=0;i<start;i++)
   a++;
   for(int i=start;i<=end;i++){
      *s++=*a++;
   }
   return s;
}

int main() {
char *str="I love apples";
char *c=sub_str(str,2,5);
printf("%s",c);
}

1 个答案:

答案 0 :(得分:4)

for(int i=start;i<=end;i++){
        *s++=*a++;
}

你正在移动。因此它不起作用。返回时,s不指向子字符串的开头或指向使用malloc分配的内存。