簡體   English   中英

如何從C中的輸入讀取字符串數組並傳遞給函數?

[英]How to read a string array from input in C and pass to function?

我一整天都被困在這個問題上。 我希望能夠在 C 中創建一個字符串數組,並將該數組傳遞給 PrintStuff 函數。 我不想將我的參數更改為 PrintStuff,但仍要使其工作。 請問有什么幫助嗎?

void PrintStuff(const char **arr) {
  for (int i = 0; i < 5; ++i) {
        printf ("%s\n", arr[i]);
    }
}

int main ()
{
    //This works
    //char * array[5] = { "this", "is", "a", "test", "megan"};

    //This doesn't work
    char * array[5];
    for (int i=0;i<5;i++)
    {
        //scanf("%9s", array[i]);
        fgets(array[i], 10, stdin);
    }

    Sort(array, 0, 5 - 1);
}

它沒有做任何事情,我收到這個警告說

將“char *[5]”傳遞給“const char **”類型的參數會丟棄嵌套指針類型中的限定符 [-Wincompatible-pointer-types-discards-qualifiers]

我不知道這意味着什么或如何解決它,請幫助我!!!!!!!

首先了解什么是char* array[5]

這只不過是指向char*的 5 個指針的數組,因此在使用它們之前,每個指針都需要內存。

char* array[5] = NULL;
int noe = sizeof(array) / sizeof (array[0]);

for(int a = 0; a < noe; a++) {
    if( !(array[a] = malloc(BUFFER_SIZE))
        printf("malloc failed at %d entry\n", a);
}

使用完后不要忘記釋放它們

for(int a = 0; a < noe; a++) {
    if(array[a]) {
        free(array[a]);
        array[a] = NULL;
    }
}

暫無
暫無

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

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