如何在argc和argv中分配字符串

时间:2016-02-02 11:33:39

标签: c linux

我正在编写一个用户验证程序,在成功登录后,我提供了一个类似提示的shell:

int main()
{
    int argc;
    char **argv;
    char *username = malloc(50);
    char *passwd = malloc(32);
    char command[200];

    printf("Enter username:");
    scanf("%s", username);
    printf("\n");

    printf("Enter password:");
    get_passwd(passwd); //User defined function for taking the password without echoing.

// Then a authentication module is called;
    int success =  authenticate_user(username, passwd);

//After successful authentication of user I will print like:

    printf("test @ %s >", username);

// To look user that he is working on program's own terminal where user can input some command as string

   gets(command);

//Here is the main problem
// I tried using strtok() and g_shell_parse_argv () but not getting the desired result.
   return 0;

}

其他团队成员根据命令字符串解析编写了进一步操作的程序。他们告诉我,我必须将其解析为argc和argv变量,如main(int argc,int ** argv)函数签名形式变量。

是否有任何C库可以执行该操作或任何最佳实践提示或样本以继续。

  

最后我必须在argc和argv中解析一个字符串。

非常感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:0)

  • 对于命令行参数,您必须使用它,

    int main(int argc, char **argv)
    
  • 在您的代码中,您可以这样做。

    int main(int argc, char **argv)
    {
       //your remaining code
       int success =  authenticate_user(argv[1], argv[2]);
    }
    
  • 例如,当您运行程序时,

    ./demo username password  (./demo abhijatya 1234)
    
  • 所以, argv [0] = ./demo argv [1] =用户名(abhijatya) argv [2] =密码(1234)。