C程序列出文件

时间:2013-02-02 14:24:11

标签: c linux

我正在创建一个非常简单的C程序调用{​​{1}},它将:

1)列出目录中将文件存储在数组中的文件

到目前为止我有这个代码,但似乎没有用。

{}

3 个答案:

答案 0 :(得分:3)

您需要使用argv将命令行参数与"-ah""-ad"进行比较。

#include <string.h>

if (argc > 2)
{
  if (strcmp (argv[1], "-ah") == 0)
  {
    /* List hidden files */
  }
  else if (strcmp (argv[1], "-ad") == 0)
  {
    /* List files */
  }
  else
  {
    /* Unknown command-line argument */
  }
}
else
{
  /* No command-line arguments */
}

参考文献:

  

C11(n1570),§5.1.2.2.1程序启动

     

如果声明它们,main函数的参数应服从   以下约束:

     

- argc的值应为非负值。

     

- argv[argc]应为空指针。

     

- 如果argc的值是   大于零,数组成员argv[0]argv[argc-1]   包含应包含指向字符串的指针   程序之前主机环境实现定义的值   启动。目的是向计划提供确定的信息   在从托管环境中的其他位置启动程序之前。如果   主机环境无法为字符串提供字符串   无论是大写还是小写,实施都应确保   字符串以小写形式接收。

     

- 如果argc的值大于零,则argv[0]指向的字符串表示   程序名称;如果程序,argv[0][0]应为空字符   名称在主机环境中不可用。如果是argc的值   大于一,argv[1]指向的字符串   argv[argc-1]代表程序参数。

答案 1 :(得分:2)

而不是

if (-ad)

你必须写一些像

这样的东西
if (strcmp(argv[1],"-ad")==0)

if (-ah)

相同

答案 2 :(得分:2)

您尝试读取命令行参数的方式是错误的

鉴于

int main(int argc, const char * argv[])

程序的第一个参数(例如“-ad”)将存储在argv[1]中。您需要分析该字符串以了解您的程序应该做什么。

Here's argc和argv的基本介绍。在现实世界的程序中也应该有一些保护:例如,程序应该通过检查argc来检查它是否实际上是通过参数调用的:

if (argc < 2) {
   printf("What do you want me to do?\n");
   return 3;
}

或者 - 但尝试通过至少手动处理命令行参数来使其工作 - 您可以将整个命令行处理委派给getopt