Я не знаю, название правильно решает мою проблему или нет. Итак, я просто пойду с ним. Вот проблема, мне нужно ввести массив символов пути к файлу (в 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
.
Как я могу выполнить свою задачу? Заранее спасибо.
"t\es\t \it"
не содержит обратную косую черту, потому что компилятор проверяет их во время компиляции и заменяет, например,\t
в строке с табуляцией. Для несуществующих управляющих кодов (например,\i
в вашей строке) компилятор выдаст предупреждение и удалит обратную косую черту. В файле есть только обратная косая черта, а не после того, как код прошел через компилятор. - person Some programmer dude   schedule 02.07.2013