首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

获取文件名的有关问题

2012-03-18 
获取文件名的问题wReadfp (FILE *)fopen(c:\ad\ad\ccadsf\ddd.txt,r)用fopen打开文件后,怎么获取真

获取文件名的问题
wReadfp = (FILE *)fopen("c:\ad\ad\ccadsf\ddd.txt","r");

用fopen打开文件后,怎么获取真正的文件名啊, 想得到 ddd.txt

百度没找到!!

目前想到的方法是按"\"分割,取最后一个



[解决办法]
按"\"分割,取最后一个
就是这么取的,在windows下你会发现文件名中包含'\',在linux文件名包含'/'都是不合法的。所以最后就能保证取到的是真正的文件名。

C/C++ code
char *cp = strrchr(filepath, '/');if(cp) {    ++cp;    printf("filename is %s\n", cp);}
[解决办法]
wReadfp = (FILE *)fopen("c:\\ad\\ad\\ccadsf\\ddd.txt","r");
_splitpath, _wsplitpath
Break a path name into components.

void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext );

void _wsplitpath( const wchar_t *path, wchar_t *drive, wchar_t *dir, wchar_t *fname, wchar_t *ext );

Routine Required Header Compatibility 
_splitpath <stdlib.h> Win 95, Win NT 
_wsplitpath <stdlib.h> or <wchar.h> Win 95, Win NT 


For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version 
LIBCMT.LIB Multithread static library, retail version 
MSVCRT.LIB Import library for MSVCRT.DLL, retail version 


Return Value

None

Parameters

path

Full path

drive

Optional drive letter, followed by a colon (:)

dir

Optional directory path, including trailing slash. Forward slashes ( / ), backslashes ( \ ), or both may be used.

fname

Base filename (no extension)

ext

Optional filename extension, including leading period (.)

Remarks

The _splitpath function breaks a path into its four components. _splitpath automatically handles multibyte-character string arguments as appropriate, recognizing multibyte-character sequences according to the multibyte code page currently in use. _wsplitpath is a wide-character version of _splitpath; the arguments to _wsplitpath are wide-character strings. These functions behave identically otherwise.

Generic-Text Routine Mappings

TCHAR.H Routine _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined 
_tsplitpath _splitpath _splitpath _wsplitpath 


Each argument is stored in a buffer; the manifest constants _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, and _MAX_EXT (defined in STDLIB.H) specify the maximum size necessary for each buffer. The other arguments point to buffers used to store the path elements. After a call to _splitpath is executed, these arguments contain empty strings for components not found in path. You can pass a NULL pointer to _splitpath for any component you don’t need.

Example

/* MAKEPATH.C */

#include <stdlib.h>
#include <stdio.h>

void main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];

_makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" );
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_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 );
}


Output

Path created with _makepath: c:\sample\crt\makepath.c

Path extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath


Ext: .c


File Handling Routines

See Also _fullpath, _getmbcp, _makepath, _setmbcp



[解决办法]
Windows下用PathStripPath。
[解决办法]
_splitpath或者_wsplitpath
就可以啊。

热点排行