1
char*[] makeList(char *path, int *noOfFiles);

私の意図は明らかだと思いますが、これはうまくいきません。

PS私は戻り値を呼び出された変数に格納する必要がありますchar *fileList[260]char** fileList.

4

2 に答える 2

2

内にラップされていない限り、関数からポインターの配列を返すことはできませんstruct。配列を返そうとすると、それはポインター値に崩壊するため、返される結果は実際にはポインターになります。

どうにかしてポインターの配列を返すことができたとしても、変数fileListが として定義されている場合、それを変数に割り当てることはできませんchar *fileList[260]。配列型と同様fileListに、配列への代入は禁止されています。

関数で配列の内容を変更する (または配列に入力する) 場合は、配列を関数に渡す必要があります。

int makeList(char *path, int *noOfFiles, char *listOfFiles[], int maxFileCount);

/*...*/
char *fileList[260];
int fileCount;
int result = makeList("/some/path", &fileCount, fileList,
                      sizeof(fileList)/sizeof(*fileList));

関数は、 個以上のエントリを にmakeList()書き込まないようにする必要があります。渡された配列が保持できるよりも多くのファイルを返す場合、より大きな配列が必要であることを示す結果を返すことができます。maxFileCountlistOfFiles

于 2013-08-22T23:02:46.880 に答える