在 Debian(以及大多数 Linux 系统)里,并没有标准库函数叫 copendir。
你可能是把下面几个函数搞混了,或者看到的是某个非标准/自定义函数:
opendir打开目录,返回 DIR *
#include <dirent.h>
DIR *dir = opendir("/path");
if (!dir) {
perror("opendir");
}
✅ 这是标准 POSIX 函数
readdir读取目录项
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir关闭目录
closedir(dir);
常见原因只有这几种:
copendir 根本不存在copendirimplicit declaration of function 'copendir'
或
undefined reference to 'copendir'
✅ 解决:改用 opendir
例如:
copendir✅ 解决:
grep -R "copendir" .
确认是否有定义
opendir)opendir("/home/user/test");
如果:
会返回 NULL
✅ 检查:
ls -ld /path
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir(".");
if (!dir) {
perror("opendir");
return 1;
}
struct dirent *e;
while ((e = readdir(dir)))
printf("%s\n", e->d_name);
closedir(dir);
return 0;
}
编译:
gcc test.c -o test
你可以直接贴出:
我可以精确告诉你 是哪一行、为什么打不开。