Мне нужно преобразовать путь к файлу в 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");