1

我对 c 很陌生,对任何其他语言的经验都比较少:/ 对于 uni 的作业,我有点卡在这个小部分上。本质上,我需要编写一个具有 4 个可选参数的“ls”函数,例如:

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

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

这是我实际必须做的一小部分,但任何朝着正确方向的推动都将不胜感激。

4

1 回答 1

0

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

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

假设您在 Linux/Unix 上,您将需要使用目录函数 opendir()/readdir()/closedir() - dirent.hstat()函数将需要满足 -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,则为“/”。这个方案在文件名中不应该有任何路径分隔符,所以一个的存在告诉你它是一个路径。

于 2012-09-06T13:44:23.847 回答