Другие уже ответили на ваш вопрос. Это о коде.
// Your code:
// System Programming.cpp : Defines the entry point for the console application.
//
Просто удалите этот комментарий. Это не правда :-) Точка входа для вашей программы - это место, где машинный код начинает выполняться, а с помощью цепочки инструментов Microsoft это определяется параметром компоновщика /entry
.
Обратите внимание, что документация Microsoft, как правило, смущает точки входа, например, он всегда, так или иначе, документировал неверную подпись для точки входа.
Это одна из самых печально известных ошибок документации Microsoft, и, учитывая, что она сохраняется в различных формах в течение 15 лет, я думаю, что это что-то говорит (хотя точно не знаю, что именно).
// Your code:
#include "stdafx.h"
Вам не нужен этот автоматически сгенерированный заголовок. Вместо этого используйте <windows.h>
. Минимальный способ включить <windows.h>
для вашей программы:
#undef UNICODE
#define UNICODE
#include <windows.h>
Для C ++ в целом вы также должны убедиться, что STRICT
и NOMINMAX
определены перед включением <windows.h>
. С современными инструментами, по крайней мере, STRICT
определяется по умолчанию, но это не помешает. Без этого некоторые объявления не будут компилироваться с помощью компилятора C ++, по крайней мере, без переинтерпретации приведений, например диалоговые процедуры.
// Your code:
#include "iostream"
using namespace std;
Почти нормально.
Сделайте это:
#include <iostream>
using namespace std;
Разница в том, где компилятор ищет заголовки. С указанным именем он сначала ищет в некоторых дополнительных местах (и это все, что стандарт должен сказать об этом). В большинстве компиляторов эти дополнительные места включают каталог включаемого файла.
// Your code:
int _tmain(int argc, _TCHAR* argv[])
О нет! Не делай этого. Это «особенность» Microsoft, которая помогает поддерживать Windows 9.x. И это актуально только в том случае, если вы используете динамическую связь MFC и нацелены на Windows 9.x; без MFC на картинке вы бы просто использовали слой Microsoft Unicode.
На какую область вы ориентируетесь на Windows 9.x с приложением, использующим динамически связанную MFC?
Вместо этого делайте ...
int main()
... который является стандартным, или используйте расширение языка Microsoft ...
int wMain( int argc, wchar_t* argv[] )
... если вы хотите обрабатывать аргументы командной строки «простым» способом.
// Your code:
{
HANDLE hin;
HANDLE hout;
TCHAR buff[20]= {'q','2','3'};
TCHAR buff2[20]={'a','v'};
Материал TCHAR
- это нечто большее, чем поддержка MFC в Windows 9.x.
Помимо того, что это совершенно не нужно (по-видимому, вы на самом деле не ориентируетесь на Windows 9.x, не так ли?), Оно скрывает ваши намерения и ранит глаза.
Вы имели в виду ...
char buff[20] = {'q', '2', '3'};
... возможно?
// Your code:
hin = CreateFile(_T("Abid.txt"),GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(hin == INVALID_HANDLE_VALUE)
{
cout<<"error";
}
Как уже упоминалось, OPEN_EXISTING
не логично, когда вы создаете файл, и аргумент указателя счетчика не может быть 0 для вашего использования.
При использовании <windows.h>
с определением UNICODE
, как и должно быть, аргумент имени файла должен быть указан как L"Abid.txt"
.
Приветствия и hth.,