|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
То же самое в С: Код: sql 1. 2. 3. 4. 5.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:09 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Семантически - это не совсем то. Я ведь хотел использовать этот бутерброд из строк многократно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:19 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Если настолько хочется ленивых извращений, то можно взять https://github.com/herumi/xbyak и генерировать функции, которые будут генерировать нужные строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:47 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
только что хотел полазить в исходниках MySQL.... заглянул в этот топик и устал, надо отдохнуть ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 19:18 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Вот же нафлудили на ровном месте. memcpy() достаточно для C, ни один компилятор не ругнется. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 21:01 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Всего две проблемы с ним: 1) Надо вычислять длину присобачиваемой строки; 2) Возвращает он опять же dest. То есть выигрыша по скорости - полный нуль. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 23:25 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
mayton Уткъ, я не знаю что у тебя за компиллятор. Но попробуй так. Должно работать. Код: plaintext 1. 2. 3. 4. 5.
Присвоение указателю чего-то. Потом - пере-присвоение. Но в эти переменные уже нельзя будет конкатенировать потому что алоцировано ровно столько байтов сколько букв. Ну и +1 символ нуля "\0" (ASCIIZ) Объявил как вы написали, только без присваивания: Код: plaintext 1.
, значение присвоилось нормально: Код: plaintext 1.
Более того, сложение строк отработало корректно: Код: plaintext 1.
Я очень рад, большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 06:08 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Не бери за чистую монету. Проверяй меня. Сомневайся. В первом и втором присвоении было присвоение не значения а указателя. Для изучающих, главная сложность С/C++ - это работа с указателями и контроль над памятью. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 11:16 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Смотрите, вот так объявил: Код: plaintext 1. 2.
вот так присвоил: Код: plaintext 1.
вот так складывается нормально: Код: plaintext 1.
Но. Если объявить так: Код: plaintext 1. 2.
присвоить Код: plaintext 1. 2.
то Код: plaintext 1.
вызывает Segmentation fault Подскажите пожалуйста, как зарезервировать память для str_var чтобы к ней присоединилась еще одна строка? читаю про malock, думаю как-то с помощью её, но как пока не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 13:52 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Уткъ читаю про malock, думаю как-то с помощью её, но как пока не понял. Все верно, надо malloc(), читай внимательней. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:02 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Dima T Уткъ читаю про malock, думаю как-то с помощью её, но как пока не понял. Все верно, надо malloc(), читай внимательней. ну смотрите, выделяю при обявлении char *str_var=(char *)malloc(10000); все равно Segmentation fault 10 000 символов по идее сильно больше чем строка... Скажите, как-то по-другому надо выделять? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:07 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Уткъ Скажите, как-то по-другому надо выделять? Все правильно выделено. Только после надо убедится что память была выделена и показать последующий код на котором вылетает. Если такой код Код: plaintext 1. 2. 3. 4.
то это утечка памяти, т.к. теряется указатель на выделенную память. "server=" надо копировать в str_var ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:15 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Утк. Показывай целый исходник. А то так непонятно когда ты выделяешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:15 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Уткъ, после выделения malloc, память содержит мусор - ее надо зачистить. можно использовать calloc, можно просто прописать 0, чтобы strcat знал, что строка пустая str_var[0] = 0; ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:16 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
mayton Утк. Показывай целый исходник. А то так непонятно когда ты выделяешь. Вот весь исходник: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:23 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Siemargl Уткъ, после выделения malloc, память содержит мусор - ее надо зачистить. можно использовать calloc, можно просто прописать 0, чтобы strcat знал, что строка пустая str_var[0] = 0; Прописал str_var[0] = 0; перед str_var = "server="; ошибка осталась . malloc заменил на calloc не скомпилилось, с calloc разбираться надо, пока не дошел до него. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:28 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Dima T ААА!!! вот так сработало!!! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:31 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
Уткъ, теперь сбоя сегментации нет но есть утечка. Обычно после того как попользовались памятью - ее удаляют. Вот так. Код: plaintext 1. 2. 3.
В main функции это прокатило потому что это одноразовый вызов и ОС после этого делает зачистку памяти но в другом кейсе где будет цикл ты переполнишь память бесполезными аллокациями. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:38 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
mayton Уткъ, теперь сбоя сегментации нет но есть утечка. Обычно после того как попользовались памятью - ее удаляют. Вот так. Код: plaintext 1. 2. 3.
В main функции это прокатило потому что это одноразовый вызов и ОС после этого делает зачистку памяти но в другом кейсе где будет цикл ты переполнишь память бесполезными аллокациями. Да, надо все делать аккуратно ;) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 14:42 |
|
Си объеденить более двух строк.
|
|||
---|---|---|---|
#18+
mayton? так а где вывод от Гуру? куда делось ip_var? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2022, 22:58 |
|
|
start [/forum/topic.php?fid=57&msg=40129296&tid=2017136]: |
0ms |
get settings: |
13ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
258ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 632ms |
0 / 0 |