Мне нужно преобразовать путь к файлу в Windows, скажем, из c:\abc\efg\mmm.txt в c:\\abc\\mm.txt?

Как мне изменить путь к файлу в виде `

C:\ а \ EFG \ mmm.txt

в

c:\\abc\\mm.txt?

и что я могу сделать, чтобы изменить

.txt расширение, скажем, .doc?

`РЕДАКТИРОВАТЬ:

Эти пути только для иллюстрации.

Фактические пути состоят из букв дисков и любого количества подкаталогов. И расширения файлов могут быть любого формата.

1 ответ

Решение

Ваша задача не совсем понятна. Если вы ТОЛЬКО хотите дублировать обратную косую черту, и это чистый C, и у вас нет широких символов (то есть только ASCII), то вы можете сделать что-то вроде:

char* p = str;
char target[MAX_PATH + 1]; // or some other way to be sure it will hold the transformed string
char* t = target;

while (*p) {
  char ch = *p++;
  if (ch == '\\')
    *t++ = '\\';
  *t++ = ch;
}

*t = '\0';

Это дублирует обратную косую черту. Чтобы заменить расширение, для простоты, вы можете определить расширение, используя int len = strlen(str); (может быть так же просто, как проверка последних символов в str). После этого вы можете заменить while состояние по while(p - str < len - 3) а потом strcat(target, "doc");

Другие вопросы по тегам