|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|||||||||||
Access violation и размерность символьного массива03.06.2012, 02:13. Показов 5549. Ответов 76
Метки нет (Все метки)
Всех приветствую!
Только начинаю работать с консолькой, и вот уже возникли непонятки с символьными массивами. Конкатенирую 2 введенные строчки через разделитель " - ":
Но почему я должен заботиться об этом нулевом символе и плюсовать дополнительно еще один символ в размерности для этого нулевого символа? ![]() Хотя, наверное, мое предположение об 0-ом символе неверно. Тогда что же это?
0
|
|||||||||||
| 03.06.2012, 02:13 | |
|
Ответы с готовыми решениями:
76
Access violation. Выход за границы массива Access Violation при обращении к элементу массива Access violation при выводе массива через функцию |
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
| 05.06.2012, 00:20 [ТС] | |
|
0
|
|
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
| 05.06.2012, 00:33 [ТС] | |
|
Avazart, хм... а почему так происходит, если убрать cin?
0
|
|
|
|
|
| 05.06.2012, 00:49 | |
|
Ну по тому что записывается "abcde\0\0\0\0\0....\0" (как сказано в цитате).
а в во вторую строку "0123456789" без \0. но как сказано в цитате это зависит от компилятора т.е вероятно может быть в первой строке записалось "abcde\0??????" по тому и мусор Добавлено через 11 минут Вприципе чего гадать- можно просто поэксперементировать
1
|
|
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
| 05.06.2012, 00:58 [ТС] | |
|
Avazart, о, значит получается у второй строки сразу после введенных символов оказался /0? Но это же не наш нулевой символ, а просто рандомный мусор - я правильно понимаю?
0
|
|
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
| 05.06.2012, 01:02 [ТС] | |
|
Avazart, странно... А почему тут 'a' (из первой строки) вдруг на /0 перезаписалась?
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 05.06.2012, 01:11 | |
|
При вводе строки автоматически записывается ноль символ в конце. При вводе 20 символов он просто пишется за пределы массива, в данном случае в str[20];
0
|
|
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|||||
| 05.06.2012, 01:14 [ТС] | |||||
|
Avazart, и как-то
В общем, какой-то хитрый рандом). Добавлено через 42 секунды Toshkarik, Ну тогда возвращаемся... К... Да собственно к первой мессаге моей - как тогда объясните AV, если на str[20] у меня записался /0.Добавлено через 2 минуты
0
|
|||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
| 05.06.2012, 01:16 | ||||||
|
Enter это символ новой строки '\n', он никак не относится к данной операции. Просто так реализована перегрузка оператора >> на ввод строки. При
1
|
||||||
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
||
| 05.06.2012, 01:20 [ТС] | ||
|
Toshkarik,
Дык все-таки почему в моем случае возникает тогда Access Violation, если в конце szString2 записывается /0? По ячейке szString2[20]. И должно быть все норм впоследствии... А возникает AV. М?
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 05.06.2012, 01:21 | |
|
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 05.06.2012, 01:23 | |
|
С чего это норм? Данные записываются за пределы массива, на что и указывает ошибка. Я думаю, что просто реализация исключений у всех компиляторов разная.
0
|
|
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
||
| 05.06.2012, 01:27 [ТС] | ||
|
Avazart, чего-то не понял... Вы перезаписал \0 получается?
И что это нам дает?Toshkarik,
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 05.06.2012, 01:28 | |
|
А на чем? На чтении?
Это в принципе без разницы. Просто сам факт доступа к данным за пределы массива вызывает исключение в функции strcat().
0
|
|
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
||
| 05.06.2012, 01:44 [ТС] | ||
|
Toshkarik,
Но если ниже использовать strcat, которая будет считывать из этой строчки, то почему-то возникает ошибка, хотя она должна дойти до этого знака '^' и успокоиться...
0
|
||
|
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
|
|
| 05.06.2012, 01:49 [ТС] | |
|
Чего-то пипец у меня каша в голове теперь...
0
|
|
| 05.06.2012, 01:49 | |
|
Access Violation at address. при записи в StringGrid двумерного массива Ошибка 'Access violation at address 00403EF4' при вводе массива Ошибка (access violation) при обращении к элементу динамического массива структур Обращение к элементам массива порождает ошибку "Access violation" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|