簡體   English   中英

在 function 中將字符串數組作為輸入參數傳遞

[英]Passing array of strings as an input argument in a function

我是 C 的新手,我不確定問題的標題是否與我在這里要問的問題相符。 基本上我寫了一些代碼來:

  1. 每次要求用戶輸入一個字符串,並填滿字符串數組。
  2. 按字母順序對字符串數組進行排序。
    char ch_arr[nV][MAX_WORD_LENGTH];
    for (int i = 0; i < nV; i++) {
        printf("Enter a word: ");
        scanf(FORMAT_STRING, ch_arr[i]);
    }

    //sort array of string alphabetically
    char temp[MAX_WORD_LENGTH];
    for (int i = 0; i < nV; i++) {
        for (int j = i+1; j < nV; j++) {
            if (strcmp(ch_arr[i], ch_arr[j]) > 0) {
                for (int c = 0; c < MAX_WORD_LENGTH; c++) {
                    temp[c] = ch_arr[i][c]; 
                    ch_arr[i][c] = ch_arr[j][c]; 
                    ch_arr[j][c] = temp[c]; 
                }
            }
        }
    }

現在我想讓排序部分成為一個單獨的 function 以實現可重用性。 我讀過的例子都是使用雙指針指向一個字符,但我不太確定如何在這里應用它?

非常感謝您閱讀。 任何幫助將不勝感激!

有兩種方法可以在 C 中分配字符串數組。

  • 作為具有固定字符串長度的真正二維數組 - 這就是您當前擁有的。 char strings [x][y]; .
  • 或者作為指向字符串的指針數組。 char* strings[x] 與 2D 數組版本不同,可以通過char**訪問此指針數組中的一項。

2D 數組版本的優點是訪問速度更快,但這意味着您只能使用預先分配的固定大小。 指針表版本通常較慢,但允許對每個字符串進行單獨的 memory 分配。

重要的是要認識到這兩個 forms 彼此不直接兼容。 如果你想聲明一個 function 將這些作為參數,它通常是:

void func (size_t x, size_t y, char strings[x][y]); // accepts 2D array
void func (size_t x, size_t y, char (*strings)[y]); // equivalent, accepts 2D array

或者

void func (size_t x, char* strings[x]); // accepts pointer array
void func (size_t x, char** strings);   // equivalent - accepts pointer array

暫無
暫無

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

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