2016-12-01 6 views
1

У меня возникла проблема с использованием функции strcmp. Каждый раз, когда я запускаю этот код, он просто печатает идентификатор ERROR, даже если я использую правильный аргумент в командной строке.Использование argv и strcmp в C

if (strcmp(argv[1], "\?") == 0) { 
    ajudaPrompt(); 
}else { 
    printf ("ERROR.\n\n"); 
    system("pause"); 
} 

Может кто-нибудь мне помочь?

+0

Что такое «правильный аргумент»? – dbush

+0

program.exe \ ?. "\?" один. Когда я использую \ ?, он должен выполнить функцию ajudaPrompt(); – Marcos

+0

Какая платформа использует обратную косую черту \ для обозначения аргументов командной строки? Вы уверены, что на самом деле это не должно быть косой чертой? – Arkku

ответ

0

Символ \ используется для запуска кода возврата в строках C. Например, \n обозначает новую строку.

Поскольку \? не является допустимым кодом возврата, символ обратной косой черты игнорируется. Таким образом, итоговая строка в коде фактически равна "?".

Если вы хотите, чтобы строка содержала буквальную обратную косую черту, используйте две обратные косые черты.

if (strcmp(argv[1], "\\?") == 0) { 
+0

Большое спасибо! Теперь он работает нормально. – Marcos

+0

@ Marcos Glad Я мог бы помочь. Не стесняйтесь [принять этот ответ] (http://stackoverflow.com/help/accepted-answer), если вы сочтете это полезным. – dbush