命令行参数 C



我需要帮助在 C 中像这样在命令行中显示名称(我不知道如何解释)

$:Enter your name: Test
$:Test>

但是当您继续按回车键时,它仍然显示测试>

$:Test>
$:Test>

那么我们如何获得 argv[0] 并做这样的事情(对不起,我可能无法解释)

谢谢

命令行参数存储在char **argv中,并且有它们的argc。

int main(int argc, char **argv)
{
    int i=0;
    for(i=0; i< argc; i++)
       printf("argument number %d = %sn", i, argv[i]);
    return 0;
}

argv[0] 是正在执行的程序的名称,因此 argc 始终至少为 == 1(或更多)

如果你有相当像shell的程序,也许以下内容可能会有用:

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define BUFSIZE 64
int main() {
  char prompt[BUFSIZE];
  char command[BUFSIZE];
  char *prefix = "$:";
  char *suffix = ">";
  printf("%s%s%s", prefix, "Enter your name:", suffix);
  fgets(prompt, BUFSIZE, stdin);
  prompt[strlen(prompt)-1] = ''; // get rid of the n
  while (true) {
    printf("%s%s%s", prefix, prompt, suffix);
    fgets(command, BUFSIZE, stdin);
    if (strncmp(command,"Quit",4) == 0)
      break;
  }
  return 0;
}

只要有可能,你应该使用 getopt(),这样参数的顺序就无关紧要了。 例如,假设您要为大小采用整数参数,为执行模式采用整数参数,并使用切换来指示是否在"安静模式"下运行。 进一步假设"-h"应该打印帮助并退出。 像这样的代码就可以解决问题。 "s:m:hq"字符串表示"-s"和"-m"提供参数,但其他标志不提供。

int main() {
  // parse the command-line options
  int opt;
  int size = DEFAULT_SIZE, mode = DEFAULT_MODE, quiet = 0;
  while ((opt = getopt(argc, argv, "s:m:hq")) != -1) {
    switch (opt) {
      case 's': size  = atoi(optarg); break;
      case 'm': mode  = atoi(optarg); break;
      case 'q': quiet = 1;            break;
      case 'h': usage(); return 0;
    }
  }
  // rest of code goes here
}

当然,您应该添加错误检查,以防 optarg 为空。

此外,如果您使用的是C++,"string(optarg)"是您的 case 语句设置 std::string 以保存存储在 argv 中的 char* 的值的合适方式。

相关内容

  • 没有找到相关文章

最新更新