63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||
1 | ||||||
Сложение строк вызывает необработанное исключение16.07.2014, 18:44. Показов 2645. Ответов 22
Метки нет (Все метки)
никак не выходит сложить 2 строки... все время выбивает ошибку "Необработанное исключение..." пробовал и через strcat и strcpy ниче не выходит...
0
|
16.07.2014, 18:44 | |
Ответы с готовыми решениями:
22
Необработанное исключение Необработанное исключение по адресу Необработанное исключение, нарушение права доступа записи Необработанное исключение по адресу (чтение памяти невозможно) |
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
||||||
16.07.2014, 19:59 | 2 | |||||
GetHelp, могу предложить такой вариант:
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
16.07.2014, 20:00 [ТС] | 3 |
S_el, нет должны быть указатели
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||||||
16.07.2014, 20:07 | 4 | |||||
GetHelp, "test1_" - строковый литерал, неизменяемый.
можно так:
1
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
16.07.2014, 20:09 [ТС] | 5 |
Jewbacabra, литерал это пока он в таком виде ("test1_"), а когда он присвоен str1, это уже указатель на строку, и он по идее вполне должен изменяться...
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
16.07.2014, 20:13 | 6 |
Сообщение было отмечено GetHelp как решение
Решение
GetHelp, функция strcat (s, t), присоединяет строку t к концу строки s ,в вашей str1 нет места,чтобы к ней можно было присоединить str2.
1
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
16.07.2014, 20:15 [ТС] | 7 |
S_el, а разве strcat не должна сама отвечать за перевыделение памяти? о_О я почему то думал что это так...
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||||||
16.07.2014, 20:18 | 8 | |||||
str1 указатель на НЕИЗМЕНЯЕМОЕ значение.
и strcat память не выделяет
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
16.07.2014, 20:19 [ТС] | 9 |
Jewbacabra, что за бред с чего вы это взяли
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
16.07.2014, 20:23 | 10 |
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||||||
16.07.2014, 20:25 | 11 | |||||
GetHelp, этот бред из учебников по C
Добавлено через 1 минуту S_el, я имел ввиду, что
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
16.07.2014, 20:25 [ТС] | 12 |
Jewbacabra, указатель - самое что ни на есть изменяемое значение...
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
16.07.2014, 20:29 [ТС] | 13 |
ладно клозаемся, проблема была в том что strcat не предусматривает перевыделения памяти... это печально, но это хотя бы ясно и понятно
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
||||||
16.07.2014, 20:29 | 14 | |||||
Почему это ведь просто указатель,он может указывать на что угодно.Вот например:
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
16.07.2014, 20:37 | 15 |
S_el, посмотри:
не рабочий вариант http://ideone.com/LZFK6F рабочий вариант: http://ideone.com/OBK2ho
1
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
||||||
16.07.2014, 20:40 | 16 | |||||
Jewbacabra, так я и не спорю,все дело в выделяемой памяти,вот так тоже работать будет :
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
16.07.2014, 20:43 | 17 |
S_el, да так будет работать, потому что newstr указывает на значение, которое можно изменять.
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
|
|
16.07.2014, 20:45 | 18 |
Jewbacabra, надеюсь теперь все всем понятно
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
||||||
16.07.2014, 21:59 | 19 | |||||
Если я правильно понял, чего топикстартеру надо. Только учти, что размер буфера должен быть как минимум суммой длин всех строк ПЛЮС еще место под нулевой символ. В идеале надо использовать strncat или strlcat.
1
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
16.07.2014, 22:16 [ТС] | 20 |
Vtulhu, да все уже решено сказал же
0
|
16.07.2014, 22:16 | |
16.07.2014, 22:16 | |
Помогаю со студенческими работами здесь
20
Необработанное исключение win32 произошло в main.exe Необработанное исключение по адресу 0x01374339: исправить код рекурсии Вызвано необработанное исключение: нарушение доступа для записи Необработанное исключение по адресу 0x558B16B6 (msvcr110d.dll) в : 0xC0000005 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |