Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Ребята, здравствуйте, Подскажите, пожалуйста, как написать функцию (на С/С++), которая обрезает пробелы в конце переданной ей строки. Функция должна быть написана в расчёте на работу с очень длинными строками с очень большим количеством пробелов, оптимизирована по количеству обращений к памяти. Сигнатура: void TrimRight( char *s ) И мне не очень понятно, что значит "функция должна быть оптимизирована по количеству обращений к памяти". Буду очень признательна за помощь. Заранее спасибо, Марина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 22:37 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Марина ЕгинаИ мне не очень понятно, что значит "функция должна быть оптимизирована по количеству обращений к памяти". Это значит не заменять каждый конечный пробел на '\0'. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2016, 23:03 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Марина ЕгинаПодскажите, пожалуйста, как написать функцию (на С/С++), которая обрезает пробелы в конце переданной ей строки. Заводишь два указателя. Первым проходишь всю строку от начала до конца. Каждый раз как нашла пробел, ставишь на него второй указатель. Если после этого у тебя в первом указателе нашелся не-пробел - обнуляешь второй. Когда первый дошел до конца строки смотришь, если второй указатель нулевой - значит строка не имеет конечных пробелов. Если нулевой - все что после второго это пробелы. Обрезаешь по второму указателю и все. Обращений к памяти - длина строки плюс один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 00:58 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Какой-то один препод фабрикует подобные задания http://www.programmersforum.ru/showthread.php?t=186971 http://www.cyberforum.ru/csharp-beginners/thread443502.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 01:36 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
White Owl, можно проще, бежать с конца по строке и искать первый не пробел. правда, два подхода по строке придется делать - для поиска конца и обратный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 12:09 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
MasterZivWhite Owl, можно проще, бежать с конца по строке и искать первый не пробел. правда, два подхода по строке придется делать - для поиска конца и обратный.Проще, но больше обращений к памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 21:17 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
maytonКакой-то один препод фабрикует подобные задания http://www.programmersforum.ru/showthread.php?t=186971 http://www.cyberforum.ru/csharp-beginners/thread443502.html Только тупые студенты вместо форума по С/С++ постят в C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 21:23 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Фишинг. Я регулярно читаю новостные ленты в ВК. Несколько интересных стримов по технологиям, железу e.t.c. И в каждом треде 3-5 студентиков флудящих одним и тем-же месседжем. Типа Ааааа..... срочно помогите решить! Сесия на носу! Подробности в личку! Причем конструктивного диалога с ним нету. К этому времени рыба уже клюнула в одной из соц-сетей... Вобщем модерирование в этом ВК вообще нулевое. Уровень флуда зашкаливает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 22:06 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
mayton, Шо такое ВК? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2016, 22:29 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
ВК это vk.com ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 01:18 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
White Owl, правда, два подхода по строке придется делать - для поиска конца и обратный.зачем 2? strlen же есть? о_о Но обратно, да, бежать придётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 06:41 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
CEMbзачем 2? strlen же есть? о_о Но обратно, да, бежать придётся. strlen() как конец строки находит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 06:53 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Dima T, сначала я подумал, что при выделении памяти размер хранится по смещению от указателя. Потом я понял, что 3 раза протупил и пошёл посмотреть в strlen и ужаснулся. Ну, т.е. во-первых, массив текста может быть статический на стеке, во-вторых размер динамически выделенной памяти не есть длина строки, в-третьих, указатель может быть со смещением. я написал такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Внутри strlen какая-то получёрная магия, там есть беганье по всей строке в поисках конца (если это подразумевалось в вопросе), но оно хитрое, там обрабатываются данные по 4 байта сразу. Ну и магия в main_loop-е. Если кто не знает, как посмотреть, то вот код strlen: strlen Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 07:57 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
CEMbВнутри strlen какая-то получёрная магия, там есть беганье по всей строке в поисках конца (если это подразумевалось в вопросе), но оно хитрое, там обрабатываются данные по 4 байта сразу. Ну и магия в main_loop-е. Это не магия, а результат оптимизации. Читать память по 4 байта быстрее чем по одному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 08:18 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Dima T, Магия не в чтении, магия в main_loop-е :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 09:23 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Марина Егина, Я бы так нарисовал.... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 09:55 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Shifu, Белый Сов только что дал алгоритм (правильный) однопроходного решения задачи. А ты говоришь -- "нельзя"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 09:57 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Shifu, К тому же, задача стоит "написать функцию (на С/С++), которая обрезает пробелы в конце переданной ей строки." Сигнатура: Код: plaintext 1. Т.е. подразумевается усечение переданной строки, в её же памяти, а не создание новой строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 09:59 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Ключевой момент здесь написать функцию! (const char* src) Если мы изменим аргумент и его вышлем результатом, то за один проход можно это сделать, спору нет. А если мы в функции объявляем аргумент с CONST. Это означает??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 10:01 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Ну ок. Значит я неправильно понял условие. Тем более... с такими объемами, хочешь не хочешь выделять память в этой функции пришлось, что нагружает программиста следить за освобождением... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 10:03 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
ShifuMasterZiv, Ключевой момент здесь написать функцию! (const char* src) Если мы изменим аргумент и его вышлем результатом, то за один проход можно это сделать, спору нет. А если мы в функции объявляем аргумент с CONST. Это означает??? Может внимательно задание почитать? Марина ЕгинаСигнатура: void TrimRight( char *s ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 10:20 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
ShifuMasterZiv, Ну ок. Значит я неправильно понял условие. Тем более... с такими объемами, хочешь не хочешь выделять память в этой функции пришлось, что нагружает программиста следить за освобождением... как раз совсем не нужно ничего выделять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2016, 12:02 |
|
||
|
удаление пробелов в конце строки
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Видимо требуется что-то в этом роде. Он строго однопроходный и линейный относительно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2016, 17:44 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=37&tid=2018587]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 472ms |

| 0 / 0 |
