Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
#1

Непонятный приём строки - C++

17.08.2011, 23:01. Просмотров 551. Ответов 8
Метки нет (Все метки)

Всем привет.
Считываю строку с консоли:
C++
1
2
3
4
5
char* str = new char(); 
 
cin.getline(str, 80);
   
cout<<str<<endl;
Если вводить больше 24 символов, то почему-то выводятся только первые 24 символа и после них непонятно откуда взявшийся знак '!'. Пробовал считывать через gets(str) --- не помогло.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2011, 23:01     Непонятный приём строки
Посмотрите здесь:

Передача звука, приём - C++
Доброго времени суток. Вот задумал создать, что то на подобии голосового чата, но вот нет навыков в данной сфере. Может, кто то уже...

C++.Передача и приём массива функцией. - C++
Здравствуйте.Функция board инициализирует двумерный массив и передаёт его в функцию main.Компилируется без ошибок,но при запуске программа...

Определение количества часов, отводимых на приём зачёта - C++
Уважаемые участники форума,напишите пожалуйста код следующей программы на С++: Определение количества часов, отводимых на приём...

Реализовать программу, моделирующую приём заказов в интернет-фирме, согласно условию - C++
Школьная задачка на с++ Напишите пожалуйста вообще нечего не понимаю в програмирований Фирма набирает заказы через Интернет, заказ...

Непонятный синтаксис - C++
Вот есть обявление. sp&lt;DataSource&gt; source; sp&lt;DataSource&gt; это что? Спасибо!

Непонятный код - C++
#define HEX__(n) 0x##n##LU #define B8__(x) ((x&amp;0x0000000FLU)?1:0)\ +((x&amp;0x000000F0LU)?2:0)\ ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2011, 23:06     Непонятный приём строки #2
Цитата Сообщение от Enfernuz Посмотреть сообщение
C++
1
char* str = new char();
память выделена под один символ

Добавлено через 35 секунд
C++
1
char* str = new char [80]();
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.08.2011, 23:10     Непонятный приём строки #3
C++
1
2
3
4
char* str = new char[128];
cin.getline(str, 127);
delete[] str;
str = NULL;
Добавлено через 1 минуту
Maxwe11, быстрее оказался...
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2011, 23:12     Непонятный приём строки #4
Цитата Сообщение от xAtom Посмотреть сообщение
cin.getline(str, 127);
только getline учитывает нулевой символ
C++
1
cin.getline(str, 128);
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
17.08.2011, 23:22  [ТС]     Непонятный приём строки #5
Спасибо.
Чтобы прошарить до конца: если я выделяю память под один символ, то почему считывается 24?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2011, 23:26     Непонятный приём строки #6
Цитата Сообщение от Enfernuz Посмотреть сообщение
Чтобы прошарить до конца: если я выделяю память под один символ, то почему считывается 24?
вы пишите в чужую память потому последствия непредсказуемы
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
17.08.2011, 23:33  [ТС]     Непонятный приём строки #7
ок, а как выделить дополнительную память под уже выделенный массив?

C++
1
2
3
4
5
6
while(*str)
{
str++;
}
 
str = new char[n]();
?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2011, 23:55     Непонятный приём строки #8
перевыделять, копировать, удалять

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
int* arr = new int [10]();
for (int i = 0; i < 10; ++i)
   arr[i] = i;
 
int* tmp = new int [20]();
memcpy(tmp, arr, 10 * sizeof(int)); //std::copy
delete [] arr;
arr = tmp;
//продолжaем использовать arr
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2011, 00:02     Непонятный приём строки
Еще ссылки по теме:

Непонятный typedef - C++
typedef int (*LPMYDLLFUNC)(int,int); после данного typedef, LPMYDLLFUNC используется как указатель на функцию, принимающую два...

Непонятный вывод - C++
У меня есть следующий код функции на С++ void CursorPosition(HWND hWnd, int xPosition, int yPosition, int xCell, int yCell, int sx, int...

Непонятный цикл - C++
for (int i = 0, r = n - 1; i &lt; r; ++i, --r) Объясните пожалуйста, это 2 цикла в одном? Можно ли как нибудь попроще его записать?

Непонятный Код - C++
К какому языку относится следующий код: use Net::SSH2; my $user = &quot;root&quot;; my $pass = &quot;yahh&quot;; my $ip = &quot;127.0.0.1&quot;; my...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
18.08.2011, 00:02  [ТС]     Непонятный приём строки #9
Большое спасибо!
Yandex
Объявления
18.08.2011, 00:02     Непонятный приём строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru