簡體   English   中英

在c中將字符串數組從函數中傳遞出去

[英]pass string array out of function in c

我有一個用於構建字符串數組的函數。 在函數內部,我可以不用擔心打印數組,但是程序從被調用的函數返回,數組 (arr) 保持為 NULL。 如何從數組中獲取數據?

謝謝。

main(){
  char **arr = NULL;
  funct(arr);
  printf("%s\n", arr[2];
}

funct(char **arr){
  arr = malloc(10*sizeof(char *));
  arr[1...n] = calloc(SIZE, sizeof(char));
  // Add data to array
}

我可以在您的代碼中看到幾個問題:

  1. printf("%s\\n", arr[2];你忘記了結束語)
  2. 您的arr局部於main函數的變量永遠不會被初始化。 在 C 中,參數是按值傳遞的,這意味着您將NULL指針傳遞給您的函數,並且在此函數內部,分配了局部指針arr但不是main函數之一。

解決方法是在main函數中分配數組,並將數組的指針和大小傳遞給填充它的函數:

main(){
  char **arr = malloc(10*sizeof(char *));
  funct(arr, 10);
  printf("%s\n", arr[2]);
}

funct(char **arr, int size){
  // Add data to array
  arr[0] = "first data";
  ....
  arr[size -1] = "last data";
}

暫無
暫無

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

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