我正在尝试使用C中的Dirent Header文件读取目录 .
我在char数组中的给定目录中存储文件名时遇到问题 .
代码如下 .
char * FileNames;
while ( ( DirentPointer = readdir(DirectoryPointer) ) != NULL) {
strcpy(&FileNames[Counter], DirentPointer -> d_name);
Counter++;
}
当我运行应用程序时,我遇到了分段错误 . 我认为由于内存分配,strcpy会导致应用程序错误 .
谁能告诉我如何使用malloc和realloc动态地向FileNames Char *添加内存分配?
1 回答
您的代码会产生未定义的行为,或者很可能会崩溃 . 那是因为
FileNames
是一个指向一个字符的指针,而不是一个用于复制字符串的内存缓冲区,函数strcpy
不会对要复制的缓冲区进行边界检查 . 所以strcpy
会尝试写入你没有为此目的分配的内存 . 您需要先分配内存来复制文件名 .