Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2013, 18:34   #1
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию Вопрос по поводу getch()

Проблема с куском кода(сильно упрощен, но проблема именно тут):
Код:
#include<iostream>

using namespace std;

int main()
{
	char *mas = new char[100];
	setlocale(LC_ALL,".1251");
	int r = 0;
	
	do
	{
	cout << "Введите числа" << endl;
	gets(mas) + '.';
	for(int i = 0; i < strlen(mas); i++)
	{
		cout << mas << endl;
	}
	
            delete[] mas;
		cout << "Продолжить работу с программой?" << endl;
	        cout << "1 - ДА ======= 0 - НЕТ" << endl;
	        cin >> r;
			}while(r == 1);
	system("pause");
	return 0;
}
тут ф-ция gets(), при первом цикле читает строку, а в последующих просто проходит мимо( мне кажется именно в этом и проблема),

объясните почему так происходит и как с этим бороться (но нужно использовать именно ф-цию gets()) ?

Последний раз редактировалось Тёма_); 27.02.2013 в 18:38.
Тёма_) вне форума Ответить с цитированием
Старый 27.02.2013, 18:38   #2
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

а выдает в процессе работы вот такую штуку



1087x315(44.27 kB)

Последний раз редактировалось Тёма_); 27.02.2013 в 18:45.
Тёма_) вне форума Ответить с цитированием
Старый 27.02.2013, 18:49   #3
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

так все проблему я решил,
надо было
Код:
char *mas = new char[100];
вставить в цикл, т.е так:
Код:
#include<iostream>

using namespace std;

int main()
{
	char NumEd[][40] = {{"one"},{"two"}};
	char NumDes[][40] = {{"twenty"},{"thirty"}};
	char NumSot[][45] = {{"hundred and"}};
	char Num[] = "one";
	//char *mas = new char[100];
	setlocale(LC_ALL,".1251");
	int r = 0;
	
	do
	{
	cout << "Введите числа" << endl;
	char *mas = new char[100];
	gets(mas) + '.';
	for(int i = 0; i < strlen(mas); i++)
	{
		cout << mas << endl;
	}
	
            delete[] mas;
			cout << "Продолжить работу с программой?" << endl;
	        cout << "1 - ДА ======= 0 - НЕТ" << endl;
	        cin >> r;
			}while(r == 1);
	system("pause");
	return 0;
}
Тёма_) вне форума Ответить с цитированием
Старый 27.02.2013, 19:00   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Функция getch() в коде не обнаружена.
2) После вызова delete[] mas; адрес, содержащийся в переменной mas, не обязательно есть адрес, по которому можно обращаться, и передача оной переменной в качестве входного аргумента функции может привести (и, натурально, приводит) к интересным последствиям.
3) Подумайте над использованием fgets() - а то введёт добрый человек 120 символов, и получится нехорошо.
Abstraction вне форума Ответить с цитированием
Старый 27.02.2013, 19:07   #5
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

Спасибо за совет)
Тёма_) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по поводу парсера Haheedens Помощь студентам 0 04.08.2012 14:08
Аналог getch или русские буквы в getch YourLastSong Общие вопросы C/C++ 1 08.05.2011 19:25
вопрос по getch Cereter Общие вопросы C/C++ 1 21.07.2009 11:46
Вопрос по поводу памяти! Slava12345 Компьютерное железо 13 04.07.2009 16:59