//Checks if an argument was specified
if (argv[1] != "")
strcpy(Buff1, argv[1]);
else
strcpy(Buff1, "default");
如果我运行:./program test
增益1 = 测试
如果我运行:./program
Buff1 = 包/=包
如果没有指定任何内容,如何使 Buff1 默认为“默认”?
好的,如果没有传递任何内容,argc 将为 1(argc 给出传递参数的数量)。这意味着其中唯一包含任何内容的 argv 元素将是 argv[0](其中包含程序的名称)。这意味着对 argv[1] 的调用将是一个超出范围的索引,可能会导致崩溃,或者如果幸运的话将只是垃圾数据。
if(argc == 1)
strcpy(Buff1, "default");
else if(argc == 2)
strcpy(Buff1, argv[1]);
else
//do something here if there is more than 1 argument passed to it
还值得注意的是,您传递示例参数的方式并不符合您的预期:“./program test Buff1 = test”将导致 argc 为 4,argv[0] 为“test”,argv [1] 为“Buff1”,argv[2] 为“=”,argv[3] 为“test”。
只需调用“./program test helllooo”即可与我提供的程序 snipit 配合使用,用“helllooo”填充 Buff1。调用“./program test”也可以,用“default”填充Buff1。要执行更高级的操作,您必须使用命令行开关(例如 ./program test -b somehere -x somehere),这只是解析 argc 和 argv 的更高级方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)