Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印当前目录中文件名的C实用程序(Unix)_C_Unix_Directory - Fatal编程技术网

打印当前目录中文件名的C实用程序(Unix)

打印当前目录中文件名的C实用程序(Unix),c,unix,directory,C,Unix,Directory,对C和Unix来说是相当新的 我目前有: #include "stdio.h" #include <dirent.h> #include <unistd.h> int main(int argc, char ** argv) { char * current = get_current_dir_name(); //where error occurs DIR * directory = NULL; directory = opendir(current)

对C和Unix来说是相当新的

我目前有:

#include "stdio.h"
#include <dirent.h>
#include <unistd.h>

int main(int argc, char ** argv)
{ char * current =  get_current_dir_name();    //where error occurs
  DIR * directory = NULL;
  directory = opendir(current);
  if(directory == NULL)
    return -1;
  struct dirent * ent;

  while((ent = readdir (directory)) != NULL)
    printf("%s\n", ent -> d_name);

  if(closedir(directory) < 0)
    return -1;
}
#包括“stdio.h”
#包括
#包括
int main(int argc,字符**argv)
{char*current=get_current_dir_name();//发生错误的位置
DIR*directory=NULL;
directory=opendir(当前);
if(目录==NULL)
返回-1;
结构导向;
while((ent=readdir(目录))!=NULL)
printf(“%s\n”,ent->d_name);
if(closedir(目录)<0)
返回-1;
}
我被告知:dir.c:15:警告:初始化从整数生成指针而不进行强制转换


显然做了一些非常愚蠢的事情,可能需要一些帮助。

获取当前工作目录名称的标准函数是,而不是
get\u current\u dir\u name()
get\u current\u dir\u name()
是GNU扩展,只有在包含
之前定义了宏
\u GNU\u SOURCE
时才可用,不建议使用它

在您的情况下,
\u GNU\u SOURCE
未定义,因此
get\u current\u dir\u name()
不是已声明函数的名称。因此,当C编译器看到您试图调用它时,它会生成一个隐式声明

隐式函数声明在使用点创建一个声明,声明函数接受任意数量和类型的参数,并返回
int
。因此,在这种情况下,编译器认为它有一个
int
被分配给
char*
类型的变量,因此它生成“初始化从整数生成指针,而无强制转换警告”


隐式声明是C语言的一个不推荐的特性,事实上,它已从C99版本中删除,尽管现代编译器即使在C99模式下也经常接受它们(带有警告)。即使在C89模式下,我强烈建议编译时使用尽可能高的警告级别来捕获这样的错误,例如
-Wall-Wextra-Werror-pedantic
,如果您能处理它的话。

获取当前工作目录名的标准函数是,而不是
获取当前目录名()
get\u current\u dir\u name()
是GNU扩展,只有在包含
之前定义了宏
\u GNU\u SOURCE
时才可用,不建议使用它

在您的情况下,
\u GNU\u SOURCE
未定义,因此
get\u current\u dir\u name()
不是已声明函数的名称。因此,当C编译器看到您试图调用它时,它会生成一个隐式声明

隐式函数声明在使用点创建一个声明,声明函数接受任意数量和类型的参数,并返回
int
。因此,在这种情况下,编译器认为它有一个
int
被分配给
char*
类型的变量,因此它生成“初始化从整数生成指针,而无强制转换警告”


隐式声明是C语言的一个不推荐的特性,事实上,它已从C99版本中删除,尽管现代编译器即使在C99模式下也经常接受它们(带有警告)。即使在C89模式下,我强烈建议编译时使用尽可能高的警告级别来捕获这样的错误,例如
-Wall-Wextra-Werror-pedantic
,如果您能处理它的话。

获取当前工作目录名的标准函数是,而不是
获取当前目录名()
get\u current\u dir\u name()
是GNU扩展,只有在包含
之前定义了宏
\u GNU\u SOURCE
时才可用,不建议使用它

在您的情况下,
\u GNU\u SOURCE
未定义,因此
get\u current\u dir\u name()
不是已声明函数的名称。因此,当C编译器看到您试图调用它时,它会生成一个隐式声明

隐式函数声明在使用点创建一个声明,声明函数接受任意数量和类型的参数,并返回
int
。因此,在这种情况下,编译器认为它有一个
int
被分配给
char*
类型的变量,因此它生成“初始化从整数生成指针,而无强制转换警告”


隐式声明是C语言的一个不推荐的特性,事实上,它已从C99版本中删除,尽管现代编译器即使在C99模式下也经常接受它们(带有警告)。即使在C89模式下,我强烈建议编译时使用尽可能高的警告级别来捕获这样的错误,例如
-Wall-Wextra-Werror-pedantic
,如果您能处理它的话。

获取当前工作目录名的标准函数是,而不是
获取当前目录名()
get\u current\u dir\u name()
是GNU扩展,只有在包含
之前定义了宏
\u GNU\u SOURCE
时才可用,不建议使用它

在您的情况下,
\u GNU\u SOURCE
未定义,因此
get\u current\u dir\u name()
不是已声明函数的名称。因此,当C编译器看到您试图调用它时,它会生成一个隐式声明

隐式函数声明在使用点创建一个声明,声明函数接受任意数量和类型的参数,并返回
int
。因此,在这种情况下,编译器认为它有一个
int
被分配给
char*
类型的变量,因此它生成“初始化从整数生成指针,而无强制转换警告”

隐式声明是C语言的一个不推荐的特性,事实上,它已从C99版本中删除,尽管现代编译器即使在C99模式下也经常接受它们(带有警告)。即使在C89模式下,我也强烈建议编译