Я не знаю, что название правильно соответствует моей проблеме или нет. Итак, я просто поеду с ним. Вот проблема: мне нужно ввести массив символов пути к файлу (в Windows), содержащий много обратных косых черт в нем, например. «C: \ myfile.txt» и возвращает массив беззнакового символа путей файла C-стиля, например. "C: \ myfile.txt".Как заставить символ обратной косой черты не сбежать
Я попытался написать функцию.
unsigned char* parse_file_path(char *path);
{
unsigned char p[60];
int i,j;
int len = strlen(path);
for(i=0,j=0; i<len; i++, j++)
{
char ch = path[i];
if(ch==27)
{
p[j++]='\\';
p[j]='\\';
}
else
p[j] = path[i];
}
p[j]='\0';
return p;
}
Странная вещь (для меня) Я встречая есть, здесь путь содержит только один символ «\». Чтобы получить обратную косую черту, я должен поместить «\» в путь. Это невозможно, потому что путь не может содержать «\». Когда я называю это parse_file_path("t\es\t \it)
, он возвращает t←s it
. Но parse_file_path("t\\es\\t \\it")
возвращает t\es\t \it
.
Как я могу выполнить свою задачу? Заранее спасибо.
Спецификация языка C утверждает, что для получения одной обратной косой черты в строковой литературе вам необходимо ее избежать. –
Вы, кажется, ожидаете, что обратные косые черты во входном сигнале будут экранированы фактическим вылетом (ASCII 27), что, вероятно, неверно. – unwind
@JoachimPileborg Строка уже содержит некоторую одиночную обратную косую черту. Как я могу сделать каждую двойную обратную косую черту? – muntasir2000