2016-10-28 3 views
-4

Я пытаюсь создать файл с помощью API Windows, но формат имени файла является проблемой! как я могу справиться с этим?Как создать файл с помощью WINAPI

using namespace std; 

int main(){ 
    HANDLE WINAPI CreateFile("c:\nader", GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 
    return 0; 
} 
+2

Используйте правильное экранирование: '" c: \\ nader "' –

+0

Проверка кодов возврата и ошибок всегда является хорошей идеей. –

+0

'#include ' и '... var = ...' перед 'CreateFile'. – i486

ответ

0

Вы используете недействительный код, который не компилируется. И вы используете неправильный формат для строкового литерала. Попробуйте вместо этого:

#include <windows.h> 

int main() { 
    HANDLE hFile = CreateFile("c:\\nader", GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 
    if (hFile != INVALID_HANDLE_VALUE) { 
     CloseHandle(hFile); 
    } 
    return 0; 
} 

Это, как говорится, с помощью GENERIC_READ, FILE_SHARED_READ и CREATE_ALWAYS вместе не имеет никакого смысла, если ваша единственная задача не просто создать файл, но не делать какой-либо ввод/вывода с ним. GENERIC_READ делает hFile только для чтения, FILE_SHARE_READ гарантирует, что никто не может писать в тот же файл, пока вы его открываете, а CREATE_ALWAYS гарантирует, что файл всегда пуст, когда он открыт, поэтому нет возможности когда-либо иметь какие-либо данные читать от hFile. Если вы хотите прочитать данные из файла, по крайней мере, измените CREATE_ALWAYS на OPEN_EXISTING или OPEN_ALWAYS, чтобы все существующие данные файла сохранялись для чтения.

Смежные вопросы