首页 > 解决方案 > 如何从c中的函数返回字符串

问题描述

我帮助我的朋友是硬件,我遇到了一个奇怪的停电。我正在使用一个指定从给定字符串“解密”消息的函数,该过程工作正常(我调试了它以检查)但我忘记了如何将函数中的值返回到我没有触及的主程序在 C 语言中呆了一段时间,所以我在这里有点昏昏欲睡

代码(已编辑):

    void func(char* str, char* new_str, int i, int k) {
    if (i < strlen(str)) {
        if ((str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')) {
            new_str[k] = str[i];
            func(str, new_str, i + 1, k + 1);
        }
        else {
            func(str, new_str, i + 1, k);
        }
    }
}


int main()
{
    char str[100] = "l#e%i&n^&%a^&%D$%o#@T(r*e^^t*t(e%$L"; //Iterate from end to start.
    char new_str[100] = ""; //Use k index here.
    func(str, new_str, 0, 0);
    printf("%s", new_str);
    return 0;
}

标签: c

解决方案


您返回指向字符串第一个字符的指针(引用)。

char* someFunction() {
  char* newString = malloc( sizeof( char ) * 13 );
  strncpy( newString, "hello world!", 12 );
  newString[12] = '\0';
  return newString;
}

如果您的字符串无法修改(因为它是硬编码的),则返回一个const char*

const char* someFunction2() {
  return "hello world!";
}

在这两种情况下,返回值都是一个地址,指向一个字符。终止字符串的第一个字符的 C 约定'\0'用于查找字符串的结尾。


推荐阅读