2011-04-27 101 views
0

我想制作C程序“animal.c”。
和在壳,
当i型命令行选项创建文件

>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 

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

怎么办?
是否有另一种方法来接收选项值?

回答

0

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

+0

非常感谢! :)以及如何使文件,在不同的目录?从argv获得路径名后[] – user726724 2011-04-27 08:44:12

+0

尝试制作它。有什么问题? – 2011-04-27 08:49:16

2

如果你传递一个文件名,你不应该把' - '放在它的前面。实际上' - '是一个修饰符,它告诉'单个字符选项* s *跟随',' - '是一个修饰符,用于告诉'选项的名称长于单个字符'。

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

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 

它会像你自己输入的值。