| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Удаление пробелов в строках |
| Автор: Lacoste1024 24.9.2011, 16:41 | ||||
Имеются строки. Нужно удалить из них пробелы. Так как строка у меня не одна, для удаления пробелов я использую процедуру
Проблема в том, что я не знаю как сделать так, чтобы процедура удаляла пробелы из входящей строки. Например ниже я написал использование процедуре. И мне надо, чтобы из строки s удалились пробелы
Я знаю про существование функций, но в данном случае мне нужна процедура. |
| Автор: volatile 24.9.2011, 23:03 | ||
Lacoste1024, а что ваша процедура не работает? В таком случае, позвольте, немного поизвращаться
Тестирование: http://liveworkspace.org/code/e94e402e1f106d8b35759232140c62c0 |
| Автор: Lacoste1024 25.9.2011, 08:18 |
| Спасибо большое!) В параметрах процедуры не указывал знак "*". Поэтому и не работало |
| Автор: borisbn 26.9.2011, 07:24 |
| volatile, красиво, ничего не скажешь, но не факт, что *s!=' ' всегда будет 1. М.б. и 0xFF |
| Автор: mes 26.9.2011, 08:50 |
borisbn, правда ?! а если заглянуть в стандарт ? |
| Автор: borisbn 26.9.2011, 09:15 | ||
хммм. был неправ. вспылил. думал это - implementation defined. посмотрел в стандарте
|
| Автор: math64 26.9.2011, 14:28 | ||
Можно модифицировать так (и IMHO будет немного понятнее):
|
| Автор: volatile 27.9.2011, 00:58 |
math64, ну там цель ставилась не сделать понятнее, а Вообще там можно много к чему придраться, и в рельных проектах, вообще лучше воздержаться от подобного написания (я имею в виду свой вариант). Потому как сопровождать такой код, весьма проблематично. Например есть риск, что какой-нибудь умник исправит условие выхода из цикла *d=*s, на *d==*s. Или, например, если код проверять анализаторами (тандерболт вспомнился....), то он просто засыпет предупреждениями на таких местах. Но, если дело дошло уже до крайней оптимизации, где каждый такт на счету, тобудет работать быстрее, чем так как if - это всегда условный переход, а условный переход - это риск не угадать в предвыборке команд. Первый-же вариант - линейная программа без переходов и посему должна работать быстрее. |