![]() |
|
Модераторы: bsa |
![]()
|
|
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Ставлю брякпоинт на ретурн, смотрю значение str, а там первый символ h, потом куча s, а потом штук десять вообще каких-то непонятных... в чем ошибка? Добавлено через 2 минуты и 43 секунды Ну код подправлю, вопрос не в этом, почему в строке str, после создания полно символов H? Добавлено через 4 минуты и 28 секунд Еще, как узнать размер массива? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
1. Не заполняешь первый элемент массива i += 1; ДО str[i] = (char) 's';
2. Не добавляешь 0 в конец строки |
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
Никак Добавлено @ 15:55
На консоль нормально выводит? Это сообщение отредактировал(а) Alca - 7.5.2009, 15:57 |
||||
|
|||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Немножко подредактировал... Но в конце строки есть знак равно ( = ) |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
выход за границу массива, макс. индекс - 63, так как нумерация начинается с нуля |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
SneG0K
1. Выделил память - удаляй (в конце delete [] str) 2. i += 1 (++i выглядет немного лучше 3. str[64] = '\0'; - такого индекса нет, выделено 64 элемента, последний 63 так как в С/С++ индексы начинаются с нуля. Добавлено через 1 минуту и 3 секунды что-то вроде этого
|
|||
|
||||
| Soah |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 18.2.2009 Репутация: 6 Всего: 54 |
SneG0K, в C++ индексы начинаются с нуля
http://forum.vingrad.ru/index.php?showtopi...t&p=1831345 Это сообщение отредактировал(а) Soah - 7.5.2009, 16:22 |
||||
|
|||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
Тока для сишной строки Я имел ввиду, что сразу после
длину строки определить низя. Это сообщение отредактировал(а) Alca - 7.5.2009, 16:25 |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Lazin опередил
|
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
SneG0K, в С/С++ массивы строго начинаются с нуля. поэтому последний элемент в твоем массиве будет str[63]. Собственно код
не верен. надо так:
Добавлено через 54 секунды гы. припозднился. Добавлено через 3 минуты и 16 секунд дык речь и идет про массив символов. |
||||
|
|||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Аааа, все понял... Я думал, что резервируется только последняя ячейка массива, я не знал про первую..
То есть формально из 64 элементов мне доступно 62? |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
63 и +1 под '\0' (если это сишная строка) = 64 (64 - это размер массива)
Добавлено через 4 минуты и 54 секунды Если массив символов до доступно все 64 Это сообщение отредактировал(а) Alca - 7.5.2009, 17:56 |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Ну теперь все работает |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
Чтоб не путаться лучше писать так:
Это сообщение отредактировал(а) Alca - 7.5.2009, 18:11 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |