fopen (msvcrt)
Last changed: coleharrisjohnson@gmail.com-72.219.133.104

.
Summary

C# Signature:

[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi, SetLastError=true)]
public static extern Int32 fopen_s(out IntPtr pFile, String filename, String mode);
[DllImport("msvcrt.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Unicode, SetLastError=true)]
public static extern Int32 _wfopen_s(out IntPtr pFile, String filename, String mode);

VB Signature:

<DllImport("msvcrt.dll", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Ansi, SetLastError:=True)> _
Public Shared Function fopen_s(ByRef pFile As IntPtr, ByVal filename As String, ByVal mode As String) As Int32
End Function
<DllImport("msvcrt.dll", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Unicode, SetLastError:=True)> _
Public Shared Function _wfopen_s(ByRef pFile As IntPtr, ByVal filename As String, ByVal mode As String) As Int32
End Function

Alternative Managed API:

System.IO.FileStream

Notes:

It is advisable to use _wfopen_s whenever possible. fopen_s supports Unicode but requires additional "help"; you must add a "ccs=encoding" parameter to the mode parameter. Valid encoding values are UNICODE, UTF-8, and UTF-16LE; if ccs is not provided, fopen_s falls back to ASCII (it is unknown what happens if an invalid value is passed).

Tips & Tricks:

Please add some!

Sample Code:

Opening a Unicode file (example.txt) for writing (C#):

// "incorrect" way
IntPtr file;
if (!fopen_s(out file, "example.txt", "w, ccs=UNICODE"))
     // fail
else
     // success

// "correct" way
IntPtr file;
if (!_wfopen_s(out file, "example.txt", "w"))
     // fail
else
     // success

See Also:

fopen (includes _wfopen)

Documentation
fopen_s on MSDN