【问题标题】:Can i ask the user to re-enter command line argument我可以要求用户重新输入命令行参数吗
【发布时间】:2012-12-18 13:53:37
【问题描述】:
main(int argc, char *argv[])
{
if(argc != 3) {
printf("Invalid number of arguments\n");
exit(1);
}}

如果 count 与所需的参数数量不匹配,我将直接退出程序。

如果参数的数量与计数不匹配,是否有任何方法要求用户重新输入命令行参数?我的意思是没有退出程序..

【问题讨论】:

  • 当然,但我认为没有什么意义。只需调出最后一条命令并更改结尾即可。
  • printf("Invalid number of arguments\n Please try again");
  • @KarthikT:我想在不退出程序的情况下重新输入参数。我可以吗?
  • @RaghuSrikanthReddy 正如克里斯提到的那样,命令行争论通常如您所展示的那样收集,并退出无效争论。您可以改用 scanf 并自己解析它,但这种努力是不值得的。
  • @Raghu:你真的不想想那样做。命令行工具应该与其他工具一起工作,并在脚本等中工作——如果你添加了不必要的用户交互,那么你就打破了这种范式。

标签: c++ c gcc command-line-arguments


【解决方案1】:

试试:

#include <iostream>
#include <string>
std::string askUser(std::string const& question)
{   
     std::cout << question << "\n";

     std::string result;
     std::getline(std::cin, result);

     return result;
}   
int main(int argc, char* argv[])
{   
    std::string  arg1;
    std::string  arg2;
    std::string  arg3;

    arg1   = (argc > 1) ? std::string(argv[1]) : askUser("Please Enter Arg1");
    arg2   = (argc > 2) ? std::string(argv[2]) : askUser("Please Enter Arg2");
    arg3   = (argc > 3) ? std::string(argv[3]) : askUser("Please Enter Arg3");
 }   

【讨论】:

  • Loki 的回答比我的要好得多,我会在尝试我之前使用他的答案,原因如前所述。
  • 它有点忽略了这一点 - 他希望用户提供参数,并且只有当计数错误时,才再次询问(对于所有这些,或者只是额外的?我不确定)。
  • 我认为他只是希望用户输入 3 个参数,从用户的角度来看,要继续输入相同的参数,这很痛苦……哈哈,当然,如果他们设法多次输入错误的参数。
猜你喜欢
  • 2015-03-26
  • 1970-01-01
  • 2014-03-29
  • 2019-01-02
  • 2012-10-26
  • 2017-04-02
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
相关资源
最近更新 更多