Getch() в Visualstudio2008

  • Автор темы okwell5
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

okwell5

#1
Как решить проблему?
1. В коде, что ниже, функция _getch() почему-то не задерживает экран.
2. Я специально написал int _getch, так как если просто _getch(), то выдает ошибку, что идентификатор не найден: см. скрин1.
3. Если напишу getch(), тоже неправильно.
C++:
// Prog.cpp : Defines the entry point for the console application.
//
#include "iostream.h"
#include <fstream>
#include <conio.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
#include <errno.h>
#include <tchar.h>


#include "stdafx.h"
//using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
//cout<<"OK!";
printf("Unicode version ђгббЄЁ© п§лЄ\n");
printf("MBCS version\n");
//scanf(int i);
int i=7;
scanf( "i1=", &i );
printf("\ni=",i);
//scanf( "i2=", &i );
_getch();
return 0;
}
 

Вложения

lazybiz

Well-known member
03.11.2010
1 339
0
#2
Компилируешь как консольное приложение?
Что пишет если _getch() заменить на getch() ?
И попробуй отключи precompiled headers.
 
O

okwell5

#3
Компилируешь как консольное приложение?
Что пишет если _getch() заменить на getch() ?
И попробуй отключи precompiled headers.
1. Я создал консольное приложение. Запускаю обычно через меню Debug->StartDebugging(F5).
Попробовал еще запустить Debug->StartWithoutDebugging(Ctrl+F5) запускается нормально
2. Заменял _getch() на getch(), все равно ошибка та же, что в скане.
3. precompiled headers искал, не знаю где отключить. Я только перед запуском файл *.pch удаляю каждый раз.

Да, еще: пишу int getch() или int _getch() и ошибки нет, но эта функция не работает.
Кстати, еще scanf последний не срабатывает.
 

lazybiz

Well-known member
03.11.2010
1 339
0
#5
Так у тебя отладить не получается или скомпилировать?
 
S

solova

#6
если нужна просто задержка то убери "//" у "using namespace std;" и в место "getch()" напиши "cin.get()" - и консоль не закроется пока не нажмёшь Ентер
 
O

okwell5

#7
У меня прога не запускалась.

Все в порядке, сделал. Теперь запускается, геч работает, но до сих пор не понял это странное явление, предупреждения тоже исчезли. А сделал я вот как:
C++:
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
#include <fstream>
#include <conio.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
#include <errno.h>
#include <tchar.h>

#include<math.h>

.....//мой код

_getch();
 
O

okwell5

#8
Теперь еще одна проблема с этой же функцией, и не знаю, что бы сделать, чтобы именно так работало.
C++:
enum key_codes{
UP=72,DOWN=80,F1=59,HOME=0x47,END=0x4F,PgUp=0x49,PgDn=0x51,Ctlq=0x11,ENTER=
13,TAB=9
};


int _tmain(int argc, _TCHAR* argv[])
{
ifstream inFil("D:\\text.txt");
if(!inFil)
{
//cout<<"\nНе открыт файл «"<<"D:\\text.txt";
_getch();
return 1;
}

/*ofstream outFil("D:\\text.txt");
if(!outFil)
{
cout<<"\nНе открыт файл «"<<"D:\\text.txt";
_getch();
return 1;
}*/
/*ifstream myFile("D:\\text.txt");
if(!myFile)
{
cout<<"\nНе открыт файл «"<<"D:\\text.txt";
_getch();
return 1;
}*/
//out to display
//*s=" ";
char ch;
char mas[3000];
//mas[0]=' ';
int i=0;

cout<<"„ ­­лҐ Ё§ д ©« :\n";
while(inFil.get(ch))
{
//cout<<ch;
mas[i]=ch;
mas[i+1]='\0';
s=mas;
cout<<mas[i];
//cout<<"\t"<<mas[i];	//<<"\n";

//*s=*s+ch;
++i;
}
cout<<"\n";
//---key-worker----------------
enum key_codes key;
//int k=_getch();
//keys();
//key=k;
while(key!=27)
{

key = _getch();
if(key==0||key==224)
{
key = _getch();
switch(key)
{
case DOWN:
{
cout<<"\n DOWN";
continue;
}
case UP:
{
cout<<"\n UP";
continue;
}
default:
{
cout<<"\n DEFAULT IF";
continue;
}
}
}
else 
switch(key)
{
case ENTER:
{
cout<<"\n ENTER";
continue;
}
case TAB:
{
cout<<"\n TAB";
continue;
}
default:
{
cout<<"\n DEFAULT ELSE";
continue;
}
}
}
//---end of key-worker----------
//CursorControl(int CursorSize);


_getch();
return 0;
}
 

Вложения

Статус
Закрыто для дальнейших ответов.