Create a file: Difference between revisions

No edit summary
(→‎{{header|C}}: +Windows)
Line 539:
 
=={{header|C}}==
=== ISO C ===
ISO C (directory creation not supported):
<lang c>#include <stdio.h>
Line 549 ⟶ 550:
}</lang>
 
=== POSIX: ===
 
{{works with|POSIX}}
Line 568 ⟶ 569:
 
(for creation in the filesystem root, replace the filenames by "/output.txt" and "/docs")
 
=== Windows API ===
 
First, a solution with the C runtime functions <code>_creat</code> and <code>_mkdir</code>.
 
<lang c>#include <direct.h>
#include <io.h>
#include <sys/stat.h>
 
int main(void) {
int f;
f = _creat("output.txt", _S_IWRITE);
if (f == -1) {
perror("Unable to create file");
} else {
_close(f);
}
if (_mkdir("docs") == -1) {
perror("Unable to create directory");
}
f = _creat("\\output.txt", _S_IWRITE);
if (f == -1) {
perror("Unable to create file");
} else {
_close(f);
}
if (_mkdir("\\docs") == -1) {
perror("Unable to create directory");
}
 
return 0;
}</lang>
 
Another solution with the kernel32 API functions <code>CreateFile</code> and <code>CreateDirectory</code>.
 
<lang c>#include <windows.h>
#include <stdio.h>
 
int main(void) {
HANDLE hFile;
hFile = CreateFile("output.txt", GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
printf("Unable to create file\n");
} else {
CloseHandle(hFile);
}
if (CreateDirectory("docs", NULL) == 0) {
printf("Unable to create directory\n");
}
 
hFile = CreateFile("\\output.txt", GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
printf("Unable to create file\n");
} else {
CloseHandle(hFile);
}
 
if (CreateDirectory("\\docs", NULL) == 0) {
printf("Unable to create directory\n");
}
 
return 0;
}</lang>
 
=={{header|C sharp|C#}}==
175

edits