_rmdir, _wrmdir
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

_rmdir, _wrmdir

Delete a directory.

int _rmdir(
   const char *dirname 
int _wrmdir(
   const wchar_t *dirname 


Path of directory to be removed.

Return Value

Each of these functions returns 0 if the directory is successfully deleted. A return value of –1 indicates an error, and errno is set to one of the following values:

Given path is not a directory; directory is not empty; or directory is either current working directory or root directory.
Path is invalid.
A program has an open handle to the directory.

See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these and other return codes.


The _rmdir function deletes the directory specified by dirname. The directory must be empty, and it must not be the current working directory or the root directory.

_wrmdir is a wide-character version of _rmdir; the dirname argument to _wrmdir is a wide-character string. _wrmdir and _rmdir behave identically otherwise.

Generic-Text Routine Mappings

TCHAR.H routine _UNICODE & _MBCS not defined _MBCS defined _UNICODE defined
_trmdir _rmdir _rmdir _wrmdir


Routine Required header Compatibility
_rmdir <direct.h> Win 98, Win Me, Win NT, Win 2000, Win XP
_wrmdir <direct.h> or <wchar.h> Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.


See the example for _mkdir.

See Also

Directory Control Routines | _chdir | _mkdir | Run-Time Routines and .NET Framework Equivalents

© 2015 Microsoft