我一直在尝试使用c。
中的以下代码打开目录的内容#include<stdio.h>
#include<dirent.h>
main(int *argc,char *argv[]){
DIR *d;
struct dirent *dir;
d=opendir(*argv);
if(d){
while((dir = readdir(d))!= NULL){
printf("%s\n",dir->d_name);
}
closedir(d);
}
}
然后我执行这样的命令:
gcc test.c ~/Desktop
但它返回的内容如下:
/usr/bin/ld: cannot find /home/cse-swlab5/Desktop: File format not recognized collect2: ld returned 1 exit status
我找不到原因。我也尝试过把
d=opendir("<path of the file here>");
在这种情况下程序可行。我在传递参数时做错了。请帮助。
答案 0 :(得分:2)
您正在混合编译时参数和运行时参数。这应该是两个步骤:
$ gcc test.c
$ ./a.out ~/Desktop
代码中还有其他一些问题。下面是一个工作版本:
#include <stdio.h>
#include <dirent.h>
// main should return int
// argc is an int, not a pointer to an int
int main(int argc,char *argv[]){
DIR *d;
struct dirent *dir;
//argv[0] is the program name,
//argv[1] is what we want, but can only get it if it's there
if (argc > 1) d=opendir(argv[1]);
else return -1;
if(d){
while((dir = readdir(d))!= NULL){
printf("%s\n",dir->d_name);
}
closedir(d);
}
return 0;
}