Другие уже ответили на ваш вопрос. Речь идет о коде.
// 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"
.
Приветствия & НТН.,
Что здесь проблема? Пробовали ли вы установить точку останова на или внутри _tmain и пройти через код? –
Попробуйте использовать GetLastError после каждой функции. – Abyx
Кстати, это должно быть '', а не '' iostream''. –