DIR * d;
int dsize=0;
struct dirent * de;
char *dir[1024];
d=opendir(".");
while ((de = readdir(d)))
{
if((de->d_type) & DT_DIR)
{
dir[dsize]= de->d_name;
dsize++;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将文件名的地址存储到char指针数组中.
指针有点生疏我回去看了一些指针评论的页面,但我不确定我做错了什么..继续告诉我"警告:赋值从指针生成整数而没有强制转换".我的语法是否因为结构而关闭?
你不能那样存储指针.它们每次被覆盖,你调用readdir然后你有一个指向无效内存的悬空指针.如果要存储dir条目,则必须复制整个名称,而不仅仅是指针
char dir[1024][256];
while (de = readdir(d)) {
if (de->d_type & DT_DIR) {
if (dsize < 1024) {
strcpy(dir[dsize], de->d_name);
dsize++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记检查dir数组边界.否则,您可能会覆盖堆栈,这可能会导致崩溃.