char* clean_string (char *input_string){
  /*Ensure that input string isn't null and only do heavy lifting if it's not null*/
  if (input_string){
    char *stripped;
    stripped = (char*)malloc(strlen(input_string)*sizeof(char));
    while (*input_string != '\0'){
      if isalpha(*input_string){
        *stripped = toupper(*input_string);
    input_string++;
    stripped++;
      } else {
        input_string++;
    }
  }
/*       *stripped++ += '\0';*/
   return stripped;
  }
 /*default return val*/
return NULL;
}

有人可以告诉我我要怎么做吗?试图进行测试运行,当我尝试调用它时不输出任何内容。

最佳答案

您将返回一个指向字符串中最后一个字符的指针(stripped++?)。
您分配的字节太少了(应该是strlen(...) + 1)。

stripped = (char*)malloc(strlen(input_string)*sizeof(char)); /* Wrong. */
stripped = (char*)malloc(strlen(input_string) + 1);

/* .. */
stripped++;

/* .. */
return stripped;

在开始更改original_stripped = stripped之前,尝试保留一个类似于stripped的副本,然后返回复制的值(而不是递增的值)。

关于c - 从C函数返回字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7427016/

10-10 18:38