C中无法识别文件格式错误

时间:2016-02-15 06:26:07

标签: c ubuntu gcc directory

我一直在尝试使用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>");

在这种情况下程序可行。我在传递参数时做错了。请帮助。

1 个答案:

答案 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;
}