我需要一个字符串数组(动态)。我将指针发送到函数,但函数中出现了错误。
这是一项功能:
void CheckFilesInFolder(char* pathOfFolder, char*** namesFiles);我呼吁这样做:
char** namesFiles = NULL;
CheckFilesInFolder("Debug", &namesFiles);在函数中,我做malloc,当i=1时,它的断裂。
*namesFiles = (char**)malloc(*namesFiles, 10 * sizeof(char*) );
int i = 0;
for (i = 0; i < 10; i++)
{
*(namesFiles[i]) = (char*)malloc(MAX_FILE_NAME);
}发布于 2016-05-14 12:35:11
malloc只使用一个size_t参数。改变这一点:
*namesFiles = (char**)malloc(*namesFiles, 10 * sizeof(char*) );对此:
*namesFiles = (char**)malloc(10 * sizeof(char*) );让我知道可能发生的其他错误。
另外,如果需要将指针传递给调用方,为什么不将指针的入口作为参数来返回,而不是将指针的入口传递给调用方呢?
就像这样:char** CheckFilesInFolder(char* pathOfFolder);
在这个函数中做一些类似的事情:
char** namesFiles = (char**)malloc(10 * sizeof(char*) );
//(...)
return namesFiles;要打电话,只需这样做:char** namesFiles = CheckFilesInFolder("Debug");
我相信这是最好的方法。
编辑1.0以答复"alk“中的注释,下面是通过参数指向char*数组的指针来解决这个问题的方法,而不是我(更简单的)返回char**的建议
按如下方式调用函数:
char** namesFiles;
CheckFilesInFolder("Debug", &namesFiles);功能内部:
*namesFiles = (char**)malloc(10 * sizeof(char*));
int i;
for (i = 0; i < 10; i++)
(*namesFiles)[i] = (char*)malloc(MAX_FILE_NAME);职能声明:
void CheckFilesInFolder(char* pathOfFolder, char*** namesFiles);使用它,你真的需要使用参数来完成这个任务,例如,如果你想把这个函数作为一个线程的例程来调用。
https://stackoverflow.com/questions/37226252
复制相似问题