Форум программистов, компьютерный форум CyberForum.ru

splipath - C++

Восстановить пароль Регистрация
 
Rabbit13245
27 / 27 / 2
Регистрация: 21.04.2012
Сообщений: 280
24.04.2012, 21:52     splipath #1
Есть задание - написать программу, выводящую путь, откуда запущена программа. При чем путь надо разбить. Ну там логический диск, директория, имя файла, расширение и тд. Запускать надо с консоли)
Сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
int main( void )
{
   char path_buffer[_MAX_PATH];
   char drive[_MAX_DRIVE];
   char dir[_MAX_DIR];
   char fname[_MAX_FNAME];
   char ext[_MAX_EXT];
   char* buffer;
   
   
   if( (buffer = _getcwd( NULL, 0 )) == NULL )
      printf( "_getcwd error" );
   else
   {
    
    printf( "%s \nLength of path is %d\n", buffer, strlen(buffer) );
    printf("\n");
      
   }
 
   
 
    _splitpath( buffer, drive, dir, fname, ext ); 
    printf( "Path extracted with _splitpath:\n" );
    printf( "  Drive: %s\n", drive );
    printf( "  Dir: %s\n", dir );
    printf( "  Filename: %s\n", fname );
    printf( "  Ext: %s\n", ext );
    free(buffer);
Но getcwd возвращает же только путь директории..А к файлу именно как обратиться? Потому как в результате текущая директория отображается как имя файла, а расширение пустое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.04.2012, 22:38     splipath #2
Код везде должен работать? а то если винды достаточно, то для этого вин апишную GetModuleFileName можно было бы заиспользовать.
Rabbit13245
27 / 27 / 2
Регистрация: 21.04.2012
Сообщений: 280
24.04.2012, 23:00  [ТС]     splipath #3
Только винда) вот ее я уже использовал)) вот код: только юникод отключить в свойствах)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "windows.h"
#include <direct.h>
#include <string.h>
#include <string>
#include "stdlib.h"
#include "stdio.h"
 
int main( void )
{
   char path_buffer[_MAX_PATH];
   char drive[_MAX_DRIVE];
   char dir[_MAX_DIR];
   char fname[_MAX_FNAME];
   char ext[_MAX_EXT];
   char prgname[_MAX_PATH];
 
    GetModuleFileName(NULL, prgname, sizeof(prgname)); 
    _splitpath( prgname, drive, dir, fname, ext ); 
        printf( "Path extracted with _splitpath:\n" );
    printf( "  Drive: %s\n", drive );
    printf( "  Dir: %s\n", dir );
    printf( "  Filename: %s\n", fname );
    printf( "  Ext: %s\n", ext );
    printf( "  Path:%s\n", prgname);
    
    }
3BEPb_TyTa
 Аватар для 3BEPb_TyTa
18 / 18 / 1
Регистрация: 18.05.2010
Сообщений: 83
24.04.2012, 23:07     splipath #4
а юзать аргументы командной строки нельзя?
C++
1
2
3
4
5
int main(int argc, char* argv[]){
    cout << argv[0] << endl;
        system("pause");
        return 0;
}
здесь выводится полный путь с именем файла. Вырезать отсюда по отдельности диск, директорию и т.д. вроде бы не сложно...
Yandex
Объявления
24.04.2012, 23:07     splipath
Ответ Создать тему
Опции темы

Текущее время: 01:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru