我一直在检查和战斗这个程序没有成功很长一段时间,希望你能帮助我。使用readdir_r阅读目录
这个想法是读取存储在c_Localpath
中的目录,并将读取的目录复制到c_namesLocal
以返回它们。
我在执行中做错了什么?该程序打破了strcpy
,我不知道为什么。
DIR* ptr_dir = opendir(c_Localpath);
char** c_namesLocal = calloc(1, 256);
size_t numElements = 0;
int returnCode =0;
struct dirent ptr_PrevDirEntry;
struct dirent* ptr_DirEntry = NULL;
returnCode = readdir_r(ptr_dir, &ptr_PrevDirEntry,
&ptr_DirEntry);
while ((returnCode ==0) && (ptr_DirEntry != NULL)) {
char* name = c_namesLocal[numElements];
strcpy(name, ptr_DirEntry->d_name);
ptr_PrevDirEntry = *ptr_DirEntry;
returnCode = readdir_r(ptr_dir, &ptr_PrevDirEntry,
&ptr_DirEntry);
numElements++;
c_namesLocal = realloc(c_namesLocal, 256 * numElements);
}
非常感谢您的回答,但我没有完全得到它,我应该如何分配,否则比realloc? – 2012-07-17 22:17:11