0

我想做C程序,“animal.c”。
在 shell 中,
当我输入

>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”

怎么做 ?
有没有另一种方式来获得期权价值?

4

3 回答 3

2

如果你传递一个文件名,你不应该在它前面加上'-'。实际上,'-' 是一个修饰符,它告诉 'single character option*s* follow','--' 是一个修饰符,它告诉'option with name long than single character follow'。

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

于 2011-04-27T08:10:29.317 回答
0

how to do ?

To answer your last question, you need to use something like mkdir in conjunction with fopen to create the file.

is there another way to receive option value? There is a way to get "option" values by redirecting the input. If you had two lines in your program that had 2 fgets:

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

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

and in a file called data.txt you had

 Bob
 04/27/11

you can redirect the input to your program like

 myprog < data.txt

and it would be like you input the values yourself.

于 2011-04-27T09:02:20.310 回答
0

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

于 2011-04-27T08:09:28.897 回答