2016-04-24 4 views
1

Я хочу прочитать аргумент, а затем сравнить его с персонажем:проверить, если программа аргумент равен одному символу

int main (int argc, char *const argv[]) { 
    if (argv[1][1] == 'c') { 
     client(); 
    } 
    else if (argv[1][1] == 's') { 
     server(); 
    } 

    return 0; 
} 

Это работает, если я типа cc или dd, он также работает, если я типа ccttttt. Он просто берет второго персонажа, но я бы хотел, чтобы он работал, только если я набираю c.

+1

'зЬгстр (ARGV [1], "с") = = 0' –

ответ

1

Просто измените ARGV [1] [1] в ARGV [1] [0] и помните, в C/C++ все массивы начинаются в '0'

1

argv[1] является указателем на первый аргумент командной строки.

argv[1][1] является второй характер этого аргумента.

Первый символ: argv[1][0]. (Но сначала убедитесь, что argc >= 2, то есть, что есть на самом деле является аргументом командной строки.)

Конечно, это только проверяет один символ, так что он не различает между "c" и "cthulhu". Если вы хотите обработать аргумент, это нормально, но вы можете рассмотреть другой подход.

+0

Даже не между «c» и «call»;) –

+0

спасибо, и что бы вы предложили, если бы я хотел сравнить целую строку? например, я бы хотел проверить, набрал ли я «помощь» или что-то еще – mereth

+0

@mereth: 'strcmp()' –

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