Знак хеша (#) в консольном приложении C с аргументами командной строки - PullRequest
0 голосов
/ 15 сентября 2011

Я пытаюсь отправить цветовой код с php-сайта в порт.Для этого я использую консольное приложение на сервере.Выглядит это так:

int _tmain(int argc, _TCHAR* argv[])
{
    if (argc >= 3)
    {
        _tprintf ( _T("Command: %s\n"), argv[3]);

        if ( !Messenger::GetInstance()->SetServer( argv[1], _tstoi(argv[2]), false) )
        {
            _tprintf( _T("ERROR: SetServer( 192.168.10.50, 30000, false) failed") );
        }
        else
        {
            _TCHAR *p = wcstok(argv[3], _T(";"));
            while (p)
            {
                Messenger::GetInstance()->SendCommand( p );

                //_tprintf ( _T("Token: %s\n"), p);
                p = wcstok(NULL, _T(";"));
            }
        }
    }

    return 0;
}

Программа называется так:

$command = "Command=LIGHT-COLOR #00ff00";
$returnMsg = exec("PassAlong.exe \"" . $server . "\" \"" . $port . "\" \"" . $command . "\"");

К сожалению, консольное приложение возвращает только это: Команда: LIGHT-COLOR

Кажется, что строка обрезается в хеш-знаке #.

У кого-нибудь есть идеи, почему?

Спасибо за вашу помощь!Это высоко ценится!Christian

1 Ответ

1 голос
/ 15 сентября 2011

Попробуйте экранировать #, например, так:

$command = "Command=LIGHT-COLOR \\#00ff00";

Первый «\» - это экранирование «\», которое экранирует «#», если это имеет смысл.Я не программист PHP, так что это не проверено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...