2016-02-02 3 views
-1

я писал программу проверки пользователя и после Успешной входа в систему я обеспечиваю оболочку как строки:как присвоить строку в ARGC и ARGV

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, как в основной (int argc, int ** argv) формальной переменной сигнатур функций.

Есть ли какая-либо библиотека C, чтобы сделать это или любой подходящий совет или образец, чтобы продолжить.

Наконец, я должен разбирать строку в argc и argv.

Любая помощь очень ценится. Спасибо.

+0

Просьба показать ваше исследование до времени. Сначала прочитайте страницу [Ask]. –

+0

'argc' и' argv' являются параметрами функции 'main', которые заполняются операционной системой при запуске вашей программы. В вашем коде они являются неинициализированными локальными переменными. Как вы ожидаете, что они будут хранить разумные данные? Просто называя их «argc» и «argv», они не приводят их магически к аргументам командной строки. –

+0

Обратите внимание, что прототипом 'main' является' int main (int argc, char ** argv); '. В вашем вопросе вы говорите 'int ** argv' –

ответ

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).

Смежные вопросы