2015-02-08 87 views
1

我需要幫助初始化指向char數組的指針內部的另一個函數。C編程:初始化指向函數內部的字符數組的指針

我傳遞一個char數組字符指針陣列到一個函數。 我想通過地址/參考/指針將字符從變量'word'複製到'secret'。

我能夠將值傳遞給這樣的功能來做到這一點:

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); 
} 

我該怎麼辦參照到字符複製到字符數組的指針?


這裏是我已經(已經檢查的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); 
} 

OUTPUT:

Bus error: 10 
+1

[請不要投的malloc'的結果()'](http://stackoverflow.com/questions/605845/DO-I-鑄了對結果的-的malloc/605858#605858)。 – Quentin 2015-02-08 00:42:28

回答

3

簡單的指數*secret

(*secret)[i] 

,或者使用一個char *幫助變量:

char* s = *secret; ... 
+0

你能解釋它是如何工作的嗎?我真的以爲是我的祕密。 – 2015-02-08 00:48:33

+1

@ Jean-BaptisteBouhier'*'的優先級低於'[]'。還要考慮只將字符串文字分配給'char const *',並啓動編譯器警告。 – Quentin 2015-02-08 00:49:49

+0

@Quentin like gcc -Wall -Wextra -Werror file.c?你會建議哪些標誌? – 2015-02-08 01:00:15