C编程:在函数内初始化指向char数组的指针

时间:2015-02-08 00:39:22

标签: c string function pointers

我需要帮助在另一个函数中初始化一个指向char数组 的指针。

我将 char数组指向char数组的指针传递给函数。 我想从变量' word'中复制字符。秘密'通过地址/参考/指针。

我能够通过将值传递给像这样的函数来实现:

char    *set_secret(char *word, char *secret)
{
    int     i;

    for (i = 0; word[i] != '\0'; i++)
    {
        if (word[i] == ' ')
            secret[i] = ' ';
        else
            secret[i] = SECRET_SYMBOL;
    }
    secret[i] = '\0';

    return(secret);
}

如何通过引用将字符复制到char数组的指针中?


这里有我所拥有的(已检查过malloc,它一切都很好):

来源:

void    init_secret(const char *word, char **secret)
{
    int     i;
    *secret = NULL;
    *secret = (char*)malloc( sizeof(char) * strlen(word) + 1 );

    // trying changing secret value by reference and not by value (copy)
    for (i = 0; word[i] != '\0'; i++)
    {
        if (word[i] == ' ')
            *secret[i] = ' ';
        else
            *secret[i] = '_';
    }
    *secret[i] = '\0';
}

int     main(void)
{
    char    *str = "TALK TO THE HAND";
    char    *secret = NULL;

    init_secret(str, &secret);
    printf("Secret word: %s\n", secret);

    return(0);
}

输出:

Bus error: 10

1 个答案:

答案 0 :(得分:3)

只需在*secret上编制索引:

(*secret)[i]

或使用char * help变量:

char* s = *secret; ...