Create a file: Difference between revisions
→{{header|C}}: +Windows
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#}}==
|