我知道有一些关于此的条目,我浏览了它们,并不能完全到达我想去的地方。
我正在构建函数,它可以读取目录的内容并将常规文件传递给另一个函数以构建存档。
我正在尝试制作一个名为 items 的 argv[] 项目,我可以将其传递给我的函数,问题是我需要用文件名填充它。而不是静态声明它(我在很多示例中看到)我想根据文件数使用 malloc 。
这是快速的函数头:
void quick(int argc, char *argv[])
这是附加功能:
void append(char* argv[]){
struct dirent *dp;
int count, i = 3;
char *files;
char items [*files][255];
DIR *dirp = opendir(".");
if(dirp == NULL){
fail('f');
}
printf("ar: adding files in current directory to archive: %s", argv[2]);
while((dp = readdir(dirp)) != NULL){
if(dp->d_type == DT_REG){
count++;
}
}
rewinddir(dirp);
files = malloc(count*sizeof(char));
//copy argv[2] archive name, into files, so we can pass to quick
strcpy(items[2], argv[2]);
while((dp = readdir(dirp)) != NULL){
errno = 0;
dp = readdir(dirp);
//leave is dir is empty
if(dp == NULL)
break;
// Skip . and ..
if (strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0)
continue;
//if file is not the archive and a regular file add to list
if(strcmp(dp->d_name, argv[2]) != 0 && dp->d_type == DT_REG){
strcpy(items[i], dp->d_name);
i++;
}
}
closedir(dirp);
quick(i, items);
}
我在项目 arg 上遇到错误,因为指针类型不兼容,我猜我没有正确执行 malloc(可能还有我的数组),因为我仍然没有掌握这些奥秘。