|
|
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), да. это самое плохое место. не знаю пока как победить. есть коечно одно решение которое придумали до меня - обрамлять тэги кавычками <SOI>, <EOI>, <SOT>, <EOT> или <I>, <I/>, <T>, <T/>. но это решение не такое генерик как хотелось бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 14:20 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Dima T, спасибо. попробую доработать. почему то парсит один блок и выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:04 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
jenya7Dima T, спасибо. попробую доработать. почему то парсит один блок и выходит. Ты мой код запускал? Там должно быть так Код: plaintext 1. Код: plaintext Если на какой-то другой строке неправильно работает - давай строку, поправлю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:16 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Dima T, моя ошибка. все класно работает. Dima T как всегда крут. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:18 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Пользуйся. Еще думаю неправильно возвращать часть строки если она целиком в буфер не поместилась, наверно лучше пустую возвращать Код: plaintext 1. 2. 3. 4. 5. Сам подумай как правильнее ошибки обрабатывать, что где проверяется я подписал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 15:51 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Dima TЕще думаю неправильно возвращать часть строки если она целиком в буфер не поместилась, наверно лучше пустую возвращать лучше не копировать, а возвращать начало текста и длину, проще будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 16:05 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
jenya7у меня голый С.Ну вот, а здесь приличный форум. jenya7ничего не понимаю. что происходит.Это нормально, вы же задали вопрос на sql.ru. jenya7задача на несколько строк кода.Только если писать на ультракоротком языке. На C побольше выйдет. Кстати, форум «C++» -- он и для вопросов по C тоже. Dima T Код: plaintext 1. Так вы, Dim, любите буферы фиксированой длины? kealon(Ruslan)лучше не копировать, а возвращать начало текста и длину, проще будетА я бы вообще ничего не возвращал, а просто вызывал бы функции обработки блоков: Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. Вывод на консоль: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 05:02 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Пётр СедовТак вы, Dim, любите буферы фиксированой длины? в контроллерах всегда овердохера динамической памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 13:12 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Пётр Седов, у Dima T код раза в 3 меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 17:31 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 19:46 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
ИзопропилПётр СедовТак вы, Dim, любите буферы фиксированой длины? в контроллерах всегда овердохера динамической памяти?В этой задаче не нужно динамическое распределение памяти, в моём коде его и нет. Кстати, автор вопроса не писал, что задача для controller-а. jenya7Пётр Седов, у Dima T код раза в 3 меньше.Это Perl-овская краткость, когда кода мало, но надо мозг сломать, чтобы понять, что тут происходит. Кстати, Perl уже почти никому не нужен , и это неслучайно. По коду Dima T: * Плохо-читабельный write-only код. Сбивающие с толку приёмы, например указатель p смещается как в заголовке цикла, так и в его теле: Dima T Код: plaintext 1. 2. 3. 4. 5. 6. * Использование буфера фиксированной длины. Приемлемо разве что в учебных заданиях, во «взрослом» коде -- почти никогда. Кроме случаев, когда есть гарантированное ограничение на длину строки (например, WinAPI-шная константа MAX_PATH, которая используется в структуре WIN32_FIND_DATA). Но вы такое гарантированное ограничение не упоминаете. * Код, который обрабатывает блоки, не знает тип блока: Dima T Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Надо ещё выводить на консоль тип блока -- instruction или test. * Не удаляются пробелы до и после блоков (" New ", " Folks " -- с пробелами). Хотя, если вам это и не надо, то мой код можно упростить: Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. Вывод на консоль: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 03:11 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Пётр СедовКстати, автор вопроса не писал, что задача для controller-а. это не тайна, есть предыдущие вопросы и ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2017, 21:08 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
Пётр Седов* Использование буфера фиксированной длины. Приемлемо разве что в учебных заданиях, во «взрослом» коде -- почти никогда. Кроме случаев, когда есть гарантированное ограничение на длину строки (например, WinAPI-шная константа MAX_PATH, которая используется в структуре WIN32_FIND_DATA). Но вы такое гарантированное ограничение не упоминаете. тут в чем проблема. я пишу под эмбедед. если не использоать буфер фиксированной длины то нужна динамическая алокация памяти. а в эмбедед это плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2017, 15:18 |
|
||
|
Найти текстовые блоки разного типа в С.
|
|||
|---|---|---|---|
|
#18+
jenya7, если вам надо блоки иметь как ноль-завершаемые строки, и можно менять содержимое исходной строки, то можно поступить так, как делает функция strtok: писать завершающие нулевые char-ы ('\0') прямо в исходную строку: Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. Вывод на консоль: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 05:20 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39385002&tid=1340515]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 467ms |

| 0 / 0 |
