题
我想制作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
就像您自己输入值一样。
不隶属于 StackOverflow