Win32 Equivalents for C Run-Time Functions

Article translations Article translations
Article ID: 99456 - View products that this article applies to.
This article was previously published under Q99456
Expand all | Collapse all

On This Page


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.


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: November 21, 2006 - Revision: 3.1
  • Microsoft Win32 Application Programming Interface, when used with:
    • Microsoft Windows NT Advanced Server 3.1
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows 95

Give Feedback


Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from