Помогите))с мне)

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
mdems
Сообщения: 20
Зарегистрирован: 14 авг 2009, 22:48

Парни привет)))) слушайте помогите если понимаете.))
представьте себе консольное приложение в Visual Studio
c++. пытаюсь написать программу которая выводит "символы за место кнопок" как бы если нажимаю на Tab \t табуляция что бы он писал Tab а не просто прыгал ну типо в этом духе..)

вот код) только он ничего не выводит:

Код: Выделить всё

#include <stdio.h>


main()
{
  int c,tab, zab, nak;
	tab = zab = nak = 0;
	c=0;
while(1)
	{	
	while(c = getchar() == '\t')
		{
	     printf("%d tab ", c);
	     tab++;
		}
	while (c = getchar() == '\b')
		{
		printf("%d backspace ",c);
         zab++;
		}
	while (c = getchar() == '\\')
		{
		printf("%d \\ ", c);
		 nak++;
		}
	    return 1;
	}
	return 0;
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Ты не ту функцию вызываешь. Функция getchar ждёт нажатия Enter, тебе же нужна функция, считывающая клавиши в silent mode. Да и с циклами у тебя там бардак сплошной творится. Такое ощущение, что ты их тулил сам не зная зачем. Вот как программа должна выглядеть:

Код: Выделить всё

#include <stdio.h>
#include <conio.h>

main()
{
    int c,tab, zab, nak;
	c = tab = zab = nak = 0;
	
	printf("Press Esc to exit\n");

	do
    {
		c = getch();
		switch (c)
		{
			case '\t' : printf("%d tab ", c); tab++; break;
			case '\b' : printf("%d backspace ", c); zab++; break;
			case '\\' : printf("%d \\ ", c); nak++; break;
		}
    }
	while (c != 27);

    return 0;
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
mdems
Сообщения: 20
Зарегистрирован: 14 авг 2009, 22:48

спасибо тебе))) :)
а зачем ты подключал библиотеку conio.h расскажи
да ещё объясни почему внизу цикл while !=27? что он делает
_SG
Сообщения: 53
Зарегистрирован: 28 фев 2009, 10:43
Откуда: Севастополь

описание фукции getch() находится в <conio.h>
ммм.... цикл не внизу... это и есть программа! читается клавиатура до тех пор пока не нажата клавиша ECS.
mdems
Сообщения: 20
Зарегистрирован: 14 авг 2009, 22:48

[quote="_SG"]описание фукции getch() находится в <conio.h>
оо спасибо тебе теперь все понятно)) :)
QUOTE]
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

&quot писал(а):да ещё объясни почему внизу цикл while !=27? что он делает
Это не цикл с предусловием while, это цикл с постусловием do while. Между do и while расположено его тело.
&quot писал(а):27
Я ж специально написал вот эту строку, чтобы всё было понятно :)

Код: Выделить всё

printf("Press Esc to exit\n");
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
mdems
Сообщения: 20
Зарегистрирован: 14 авг 2009, 22:48

спаасибо тебе ромео))
Ответить