函数的冲突类型返回一个char数组

时间:2015-06-11 04:43:57

标签: c

这是我的代码:

#include <stdio.h>
#include <string.h>

char input_buffer[1000];


void get_substring(){


    int i;
    int length;

    printf("Please enter a string:\n");
    scanf("%[^\n]s", input_buffer);



    printf("Index of first character of substring:\n");
    scanf("%d", &i);

    printf("Length of substring:\n");
    scanf("%d", &length);

    printf("Substring is  %.*s ", length, input_buffer + i);

}


int main(void) {
    // your code goes here

    //get_substring(0,4);
    get_substring();

    return 0;
}

这是我当前的代码,我想返回一个输入指针,而不是只显示子字符串。对不起,大家都很困惑。

1 个答案:

答案 0 :(得分:1)

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

char* getSubstring(char* str,size_t start, size_t length)
{
  // determine that we are not out of bounds
  if(start + length > strlen(str))
    return NULL;

 // reserve enough space for the substring
 char *subString = malloc(sizeof(char) * length);
 // copy data from source string to the destination by incremting the 
 // position as much as start is giving us
 strncpy(subString, str + start, length);
 // return the string
 return subString;
}

int main(int argc, char* argv[])
{
  char *str = "Hallo Welt!";
  char *subStr = getSubstring(str,0,20);
  if(subStr != NULL)
  {
    printf("%s\n",subStr);
    free(subStr);
  }

}

此解决方案应该为您提供一个如何从这样的问题开始的提示。