簡體   English   中英

分配字符串數組

[英]Allocating array of strings

今天我在分配 char 的 arrays 數組(字符串數組)時遇到了麻煩,我寫了這個 function 來這樣做,但是在打印數組時,我遇到了 ZCD69B4957F06CD818D7BF3D691 的一些問題。 這是我的嘗試:

char **alloca_memoria(char **linguaggio, 
                      int n_sequenze, 
                      int *errore) 
{
    int i;        
    
    linguaggio = (char**) calloc( n_sequenze,
                                  sizeof(char*));
    
    if (linguaggio != NULL) 
    {      
        for ( i = 0;
              i < n_sequenze;
              i++ )
        {
            linguaggio[i] = (char*) calloc( MAX_SEQ , 
                                            sizeof(char));
            if ( linguaggio[i] == NULL ) 
                *errore = 1;
            else 
                *errore = 0;
        }
    }
    else 
        *errore = 1;

    return linguaggio; 
}    

我的目的只是讓它分配 memory 並返回值錯誤以檢查分配是否成功。 我真的找不到我做錯了什么。

ps n_sequenze是字符串的實際數量, MAX_SEQ是每個字符串的最大大小。

如果要更改 function 中傳遞的指針語言,則需要通過引用傳遞它。 例如

char **alloca_memoria(char ***linguaggio, 
                      int n_sequenze, 
                      int *errore) 
{
    int i;        
    
    *linguaggio = (char**) calloc( n_sequenze,
                                  sizeof(char*));

    //...

    ( *linguaggio )[i] = (char*) calloc( MAX_SEQ , 
                                        sizeof(char));

    //...

    return *linguaggio;
}

或者最好像這樣聲明 function

char **alloca_memoria( int n_sequenze, int *errore)
{
    //... 
    char **linguaggio = (char**) calloc( n_sequenze,
                                  sizeof(char*));
    //...

在調用者中你可以寫

char **linguaggio = alloca_memoria( n_sequenze, &errore );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM