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

结果是在“/动物”中制作文件“猫”
文件“猫”的绝对路径是“/动物/猫”

怎么做 ?
还有另一种接收期权值的方法吗?

有帮助吗?

解决方案

getopt 是解析命令行选项的一种流行和几乎标准的方式。您应该使用它(或类似的东西),而不是手工解析命令行参数。容易发生的错误。

其他提示

如果您通过文件名,则不应将“ - ”放在其前面。实际上“ - ”是一个修改器,告诉“单个字符”选项* s* laster',' - 是一个修饰符,告诉'具有名称的选项,名称比单个字符更长。

减轻痛苦的第一步是使用strnCMP,而不是测试通过参数的每个字符。

how to do ?

要回答您的最后一个问题,您需要使用类似的问题 mkdir 与Fopen结合使用以创建文件。

is there another way to receive option value?有一种方法可以通过重定向输入来获取“选项”值。如果您的程序中有两行,有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

就像您自己输入值一样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top