命令行选项创建文件的方式

| 我想制作C程序“ animal.c”。 在外壳上 当我键入
>animal -cat
结果是“喵”
>animal -dog
结果是“弓”。 唯一的办法吗?
void main(int argc, char **argv){
if(argv[1][0] == \'-\' && argv[1][1] == \'c\' && argv[1][2] == \'a\' && argv[1][3] == \'t\')
    printf(\"meow\");
if(argv[1][0] == \'-\' && argv[1][1] == \'d\' && argv[1][2] == \'o\' && argv[1][3] == \'g\')
    printf(\"bow\");
}
在其他情况下,当我想制作位于\“ / animal \”中的文件\'cat \'时, 假设文件夹“ animal”已经位于根目录中。
     animal -cat  
结果是在\“ / animal \”中创建文件\“ cat \” \“ cat \” \的绝对路径为\“ / animal / cat \” 怎么做 ? 还有另一种接收期权价值的方法吗?     
已邀请:
getopt是一种流行的且几乎是标准的解析命令行选项的方法。您应该使用该名称(或类似名称),而不要手动分析命令行参数。这非常容易出错。     
如果传递文件名,则不应在文件名前加上\'-\'。其实\'-\'是一个修饰符,告诉\'单字符选项* s *跟在\',\'-\'是一个修饰符,告诉\'名称长于单个字符的跟帖\'。 减轻痛苦的第一步是使用strncmp而不是测试传递的参数的每个字符。     
how to do ?
要回答最后一个问题,您需要将mkdir之类的东西与fopen结合使用来创建文件。
is there another way to receive option value?
有一种方法可以通过重定向输入来获取\“ option \”值。如果程序中有两行包含2个fget:
char name[10];
char date[9];

fgets(name,10,stdin);
fgets(date,9,stdin);
在名为data.txt的文件中
 Bob
 04/27/11
您可以将输入重定向到您的程序,例如
 myprog < data.txt
就像您自己输入值一样。     

要回复问题请先登录注册