我想制作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”
怎么办?
是否有另一种方式来获得期权价值?
答案 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
就像你自己输入值一样。