我已经3年没有使用C了,在很多事情上我都非常使用rust 。

我知道这看起来很愚蠢,但目前无法从函数返回字符串。请假设:我不能为此使用string.h

这是我的代码:

#include <ncurses.h>

char * getStr(int length)
{
    char word[length];

    for (int i = 0; i < length; i++)
    {
        word[i] = getch();
    }

    word[i] = '\0';
    return word;
}

int main()
{
    char wordd[10];
    initscr();
    *wordd = getStr(10);
    printw("The string is:\n");
    printw("%s\n",*wordd);
    getch();
    endwin();
    return 0;
}

我可以捕获字符串(使用getStr函数),但无法使其正确显示(我得到了垃圾)。

感谢帮助。

最佳答案

要么在调用方的堆栈上分配字符串,然后将其传递给函数:

void getStr(char *wordd, int length) {
    ...
}

int main(void) {
    char wordd[10 + 1];
    getStr(wordd, sizeof(wordd) - 1);
    ...
}

或者在getStr中将字符串设为静态:
char *getStr(void) {
    static char wordd[10 + 1];
    ...
    return wordd;
}

或在堆上分配字符串:
char *getStr(int length) {
    char *wordd = malloc(length + 1);
    ...
    return wordd;
}

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

10-11 18:47