区分可选参数,路径名或文件? c语言

时间:2012-09-06 13:35:32

标签: c arguments filenames pathname

我对c很新,对其他语言经验不足:/ 对于在uni的任务,我有点卡在这个小部分。基本上我需要编写一个'ls'函数,它有4个可选参数,例如:

list [-l] [-f] [pathname] [localfile] 

现在,前两个是直截了当的。为了使事情变得更加困难,'localfile'不一定存在,'pathname'(如果给出)将位于我通过套接字连接的服务器上(因此检查文件是否已经出来并检查路径名出来了)。我在想,检查字符串中的最后4个字符是否为“.txt”或类似内容。如果我找不到解决方案的话,我实际上是完全难过并且明天会将这个问题提交给我的课程输送机。

这只是我实际需要做的一小部分,但任何正确方向的推动都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

您需要处理argc和argv以获取命令行参数。这是首先要做的事情,得到论点 - 确保它们是正确的,并确定要求的是什么。

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

假设您使用的是Linux / Unix,则需要使用目录函数opendir()/ readdir()/ closedir() - dirent.h stat()函数将满足-l要求。 access()将确定文件是否存在,然后 stat()会告诉您该文件是常规文件还是目录。

我创建一个结构来保存四个可选参数,并从名为“process_arguments”的函数返回它,该函数将argc和argv作为参数。

struct args {
  bool valid;
  bool l_option;
  bool f_option
  char directory[200]; 
  char filename[200];
}

由于需要套接字连接,您必须编写一个将在服务器上不断运行的“服务器程序”和一个“客户端程序”,它将分叉以处理来自本地程序的请求。尝试找到套接字程序的示例。

另一项检查是否有路径字符串或文件名是查找路径分隔符 - “/”如果服务器是Unix / Linux。此方案不应在文件名中包含任何路径分隔符,因此存在一个告诉您它是路径。