[英]Passing array of strings as an input argument in a function
我是 C 的新手,我不確定問題的標題是否與我在這里要問的問題相符。 基本上我寫了一些代碼來:
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.