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

时间:2011-04-27 08:05:02

标签: c unix createfile

我想制作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”

怎么办?
是否有另一种方式来获得期权价值?

3 个答案:

答案 0 :(得分:2)

如果传递文件名,则不应在其前面加上“ - ”。实际上' - '是一个修饰符,告诉'单个字符选项* s *跟随',' - '是一个修饰符,告诉'名称选项长于单个字符跟随'。

缓解痛苦的第一步是使用strncmp而不是测试传递参数的每个字符。

答案 1 :(得分:0)

getopt是一种流行的,几乎是标准的解析命令行选项的方法。您应该使用它(或类似的东西),而不是手动解析命令行参数。这非常容易出错。

答案 2 :(得分:0)

how to do ?

要回答上一个问题,您需要使用类似mkdir的内容与fopen一起创建文件。

is there another way to receive option value? 有一种方法可以通过重定向输入来获取“选项”值。如果你的程序中有两行有2个fgets:

char name[10];
char date[9];

fgets(name,10,stdin);
fgets(date,9,stdin);

在一个名为data.txt的文件中,你有

 Bob
 04/27/11

您可以将输入重定向到您的程序,如

 myprog < data.txt

就像你自己输入值一样。