Win32 Equivalents for C Run-Time Functions


Many of the C Run-time functions have direct equivalents in the Win32 application programming interface (API). This article lists the C Run-time functions by category with their Win32 equivalents or the word "none" if no equivalent exists.

More Information

NOTE: the functions that are followed by an asterisk (*) are part of the 16-bit C Run-time only. Functions that are unique to the 32-bit C Run-time are listed separately in the last section. All other functions are common to both C Run-times.

Buffer Manipulation

_memccpy none
memchr none
memcmp none
memcpy CopyMemory
_memicmp none
memmove MoveMemory
memset FillMemory, ZeroMemory
_swab none

Character Classification

isalnum IsCharAlphaNumeric
isalpha IsCharAlpha, GetStringTypeW (Unicode)
__isascii none
iscntrl none, GetStringTypeW (Unicode)
__iscsym none
__iscsymf none
isdigit none, GetStringTypeW (Unicode)
isgraph none
islower IsCharLower, GetStringTypeW (Unicode)
isprint none
ispunct none, GetStringTypeW (Unicode)
isspace none, GetStringTypeW (Unicode)
isupper IsCharUpper, GetStringTypeW (Unicode)
isxdigit none, GetStringTypeW (Unicode)
__toascii none
tolower CharLower
_tolower none
toupper CharUpper
_toupper none

Directory Control

_chdir SetCurrentDirectory
_chdrive SetCurrentDirectory
_getcwd GetCurrentDirectory
_getdrive GetCurrentDirectory
_mkdir CreateDirectory
_rmdir RemoveDirectory
_searchenv SearchPath

File Handling

_access none
_chmod SetFileAttributes
_chsize SetEndOfFile
_filelength GetFileSize
_fstat See Note 5
_fullpath GetFullPathName
_get_osfhandle none
_isatty GetFileType
_locking LockFileEx
_makepath none
_mktemp GetTempFileName
_open_osfhandle none
remove DeleteFile
rename MoveFile
_setmode none
_splitpath none
_stat none
_umask none
_unlink DeleteFile

Creating Text Output Routines

_displaycursor* SetConsoleCursorInfo
_gettextcolor* GetConsoleScreenBufferInfo
_gettextcursor* GetConsoleCursorInfo
_gettextposition* GetConsoleScreenBufferInfo
_gettextwindow* GetConsoleWindowInfo
_outtext* WriteConsole
_scrolltextwindow* ScrollConsoleScreenBuffer
_settextcolor* SetConsoleTextAttribute
_settextcursor* SetConsoleCursorInfo
_settextposition* SetConsoleCursorPosition
_settextwindow* SetConsoleWindowInfo
_wrapon* SetConsoleMode

Stream Routines

clearerr none
fclose CloseHandle
_fcloseall none
_fdopen none
feof none
ferror none
fflush FlushFileBuffers
fgetc none
_fgetchar none
fgetpos none
fgets none
_fileno none
_flushall none
fopen CreateFile
fprintf none
fputc none
_fputchar none
fputs none
fread ReadFile
freopen (std handles) SetStdHandle
fscanf none
fseek SetFilePointer
fsetpos SetFilePointer
_fsopen CreateFile
ftell SetFilePointer (check return value)
fwrite WriteFile
getc none
getchar none
gets none
_getw none
printf none
putc none
putchar none
puts none
_putw none
rewind SetFilePointer
_rmtmp none
scanf none
setbuf none
setvbuf none
_snprintf none
sprintf wsprintf
sscanf none
_tempnam GetTempFileName
tmpfile none
tmpnam GetTempFileName
ungetc none
vfprintf none
vprintf none
_vsnprintf none
vsprintf wvsprintf

Low-Level I/O

_close _lclose, CloseHandle
_commit FlushFileBuffers
_creat _lcreat, CreateFile
_dup DuplicateHandle
_dup2 none
_eof none
_lseek _llseek, SetFilePointer
_open _lopen, CreateFile
_read _lread, ReadFile
_sopen CreateFile
_tell SetFilePointer (check return value)
_write _lread

Console and Port I/O Routines

_cgets none
_cprintf none
_cputs none
_cscanf none
_getch ReadConsoleInput
_getche ReadConsoleInput
_inp none
_inpw none
_kbhit PeekConsoleInput
_outp none
_outpw none
_putch WriteConsoleInput
_ungetch none

Memory Allocation

_alloca none
_bfreeseg* none
_bheapseg* none
calloc GlobalAlloc
_expand none
free GlobalFree
_freect* GlobalMemoryStatus
_halloc* GlobalAlloc
_heapadd none
_heapchk none
_heapmin none
_heapset none
_heapwalk none
_hfree* GlobalFree
malloc GlobalAlloc
_memavl GlobalMemoryStatus
_memmax GlobalMemoryStatus
_msize* GlobalSize
realloc GlobalReAlloc
_set_new_handler none
_set_hnew_handler* none
_stackavail* none

Process and Environment Control Routines

abort none
assert none
atexit none
_cexit none
_c_exit none
_exec functions none
exit ExitProcess
_exit ExitProcess
getenv GetEnvironmentVariable
_getpid GetCurrentProcessId
longjmp none
_onexit none
perror FormatMessage
_putenv SetEnvironmentVariable
raise RaiseException
setjmp none
signal (ctrl-c only) SetConsoleCtrlHandler
_spawn functions CreateProcess
system CreateProcess

String Manipulation

strcat, wcscat lstrcat
strchr, wcschr none
strcmp, wcscmp lstrcmp
strcpy, wcscpy lstrcpy
strcspn, wcscspn none
_strdup, _wcsdup none
strerror FormatMessage
_strerror FormatMessage
_stricmp, _wcsicmp lstrcmpi
strlen, wcslen lstrlen
_strlwr, _wcslwr CharLower, CharLowerBuffer
strncat, wcsncat none
strncmp, wcsncmp none
strncpy, wcsncpy none
_strnicmp, _wcsnicmp none
_strnset, _wcsnset FillMemory, ZeroMemory
strpbrk, wcspbrk none
strrchr, wcsrchr none
_strrev, _wcsrev none
_strset, _wcsset FillMemory, ZeroMemory
strspn, wcsspn none
strstr, wcsstr none
strtok, wcstok none
_strupr, _wcsupr CharUpper, CharUpperBuffer

MS-DOS Interface

_bdos* none
_chain_intr* none
_disable* none
_dos_allocmem* GlobalAlloc
_dos_close* CloseHandle
_dos_commit* FlushFileBuffers
_dos_creat* CreateFile
_dos_creatnew* CreateFile
_dos_findfirst* FindFirstFile
_dos_findnext* FindNextFile
_dos_freemem* GlobalFree
_dos_getdate* GetSystemTime
_dos_getdiskfree* GetDiskFreeSpace
_dos_getdrive* GetCurrentDirectory
_dos_getfileattr* GetFileAttributes
_dos_getftime* GetFileTime
_dos_gettime* GetSystemTime
_dos_getvect* none
_dos_keep* none
_dos_open* OpenFile
_dos_read* ReadFile
_dos_setblock* GlobalReAlloc
_dos_setdate* SetSystemTime
_dos_setdrive* SetCurrentDirectory
_dos_setfileattr* SetFileAttributes
_dos_setftime* SetFileTime
_dos_settime* SetSystemTime
_dos_setvect* none
_dos_write* WriteFile
_dosexterr* GetLastError
_enable* none
_FP_OFF* none
_FP_SEG* none
_harderr* See Note 1
_hardresume* See Note 1
_hardretn* See Note 1
_int86* none
_int86x* none
_intdos* none
_intdosx* none
_segread* none


asctime See Note 2
clock See Note 2
ctime See Note 2
difftime See Note 2
_ftime See Note 2
_getsystime GetLocalTime
gmtime See Note 2
localtime See Note 2
mktime See Note 2
_strdate See Note 2
_strtime See Note 2
time See Note 2
_tzset See Note 2
_utime SetFileTime

Virtual Memory Allocation

_vfree* See Note 3
_vheapinit* See Note 3
_vheapterm* See Note 3
_vload* See Note 3
_vlock* See Note 3
_vlockcnt* See Note 3
_vmalloc* See Note 3
_vmsize* See Note 3
_vrealloc* See Note 3
_vunlock* See Note 3

32-Bit C Run Time

_beginthread CreateThread
_cwait WaitForSingleObject w/ GetExitCodeProcess
_endthread ExitThread
_findclose FindClose
_findfirst FindFirstFile
_findnext FindNextFile
_futime SetFileTime
_get_osfhandle none
_open_osfhandle none
_pclose See Note 4
_pipe CreatePipe
_popen See Note 4

NOTE 1: The _harderr functions do not exist in the Win32 API. However, much of their functionality is available through structured exception handling.

NOTE 2: The time functions are based on a format that is not used in Win32. There are specific Win32 time functions that are documented in the Help file.

NOTE 3: The virtual memory functions listed in this document are specific to the MS-DOS environment and were written to access memory beyond the 640K of RAM available in MS-DOS. Because this limitation does not exist in Win32, the standard memory allocation functions should be used.

NOTE 4: While _pclose() and _popen() do not have direct Win32 equivalents, you can (with some work) simulate them with the following calls:

_popen CreatePipe

_pclose WaitForSingleObject
NOTE 5: GetFileInformationByHandle() is the Win32 equivalent for the _fstat() C Run-time function. However, GetFileInformationByHandle() is not supported by Win32s version 1.1. It is supported in Win32s 1.2. GetFileSize(), GetFileAttributes(), GetFileTime(), and GetFileTitle() are supported by Win32s 1.1 and 1.2.

Article ID: 99456 - Last Review: Nov 21, 2006 - Revision: 1