Вы, вероятно, создали свою строку выполнения с неправильным использованием обратной косой черты.Важно, чтобы вы понимали, как работает обратная косая черта.Примите следующее утверждение:
strcpy(buffer,"c:\tools");
Если вы исследуете значение буфера в отладчике, вы увидите что-то вроде этого:
C:<tab>ools
(вероятно, будет заменено некоторыми визуальными пробелами иливообще ничего)Это потому, что \ t переводится компилятором в символ табуляции.
Чтобы получить правильный буфер, вы должны записать это
strcpy(buffer,"c:\\tools");
Первый обратный слеш экранирует второй, заканчиваятолько с 1 обратной косой чертой.
Однако, если вы создадите свой буфер следующим образом:
buffer[0] = 'c';
buffer[1] = ':';
buffer[2] = '\\';
buffer[3] = '\\';
buffer[4] = 't';
...
Тогда буфер будет таким:
c:\\tools
И будетна самом деле содержит 2 обратных слеша.
Это потому, что обратный слэш интерпретируется компилятором, а не временем выполнения.
Заключение: осознайте, что обратный слеш интерпретируется компилятором, и только если вы используете обратный слешпостоянные строки или постоянные символы, они интерпретируются.Если вы строите строки динамически, нет необходимости использовать 2 обратных слеша.