
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.11.2006, 15:24:13
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
Вот решил наваять функцию substring для char* Получилось вот что (не обращать внимание на отсутствие проверок выхода за пределы граници т.п.) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. работает как и задумывалось - вводим "Test string", получаем "st s". Выношу это в функцию Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 15:38:14
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
похоже вы вообще не знакомы со способами обработки строк: а) вы убиваете исходную строку (ставите ее конец на символе len+pos и не восстанавливаете) б) возвращаете то, что лежит по адресу i+len я так понимаю надо: а) создать новую строку длинной len+1 б) скопировать в нее кусок данной строки в) вернуть указатель на новую строку либо а) завершить нанную строку б) вернуть src+pos что есть указатель на начало нужной вам строки в) вернуть исходную строку в первоначальное положение (вернуть зануленный байт) аффтопитезь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 15:46:02
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Что за Код: plaintext 1. ??? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 15:48:45
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
AkhЧто за Код: plaintext 1. ??? Код: plaintext 1. местный юмор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 15:50:12
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Никогда не используюте strcpy, когда памяти могут перекрываться. Используйте memmove ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 15:51:23
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Aklin AkhЧто за Код: plaintext 1. ??? Код: plaintext 1. местный юмор дух захватывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:00:47
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
А если ему так приказали реализовать? Например можно и тпк поправить Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:11:27
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Den_diТогда и ругать никого не надо На какой эти приведения типов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:19:19
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
char substr(char *str, int pos, int len) { str[pos+len]='\0'; return &str[pos]; // или return str+pos; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:30:52
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Akh Den_diТогда и ругать никого не надо На какой эти приведения типов? Как зачем , для понятности автору ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:42:39
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:43:42
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Akh Код: plaintext 1. 2. 3. 4. inline забыл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:58:14
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
ну вы и черти :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 16:58:39
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
в смысле - спасибо, работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 17:19:28
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Aklin Akh Код: plaintext 1. 2. 3. 4. inline забыл! __fastcoll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 17:30:47
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
Den_di Aklin Akh Код: plaintext 1. 2. 3. 4. inline забыл! __fastcoll fastcall не нужен для inline ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 18:26:26
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
Akh Код: plaintext 1. 2. 3. 4. Явно лишняя операция вычитания. И в меня терзают смутные сомнения - операция присваивания возвращает результат, а не переменную, вроде. Т.е. конструкция &(a=b) не осмысленна, но, возможно, я просто забыл синтаксис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 18:29:16
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
nikname Akh Код: plaintext 1. 2. 3. 4. Явно лишняя операция вычитания. И в меня терзают смутные сомнения - операция присваивания возвращает результат, а не переменную, вроде. Т.е. конструкция &(a=b) не осмысленна, но, возможно, я просто забыл синтаксис. Работает с локальными данными точно, но с char *s="dsafa" обламывается. :) Специально проверял. Согласен, что не корректно. Но само измение исходных данных в функции тоже не корректно (не красиво). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 18:33:47
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
Когда как. И функция и класс просто делают то, что должны. Возможно существуют задачи, в которых запросто можно портить буфер - поверить в это сложно, вспоминая семейство mid left и right. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 18:35:56
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
Ну да - некорректно. Если бы это было корректно, то можно было бы писать что-то типа. int i=0; int j; int k; k = *(&(i=j++)); cout <<k; // выведет 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2006, 18:39:15
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
Чё-то я переборщил с мысленным экспериментом. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2006, 09:53:00
|
|||
|---|---|---|---|
указатели, строки и функция |
|||
|
#18+
niknameКогда как. И функция и класс просто делают то, что должны. Возможно существуют задачи, в которых запросто можно портить буфер - поверить в это сложно, вспоминая семейство mid left и right. Вообще то, я ни припомню, что бы где-то портился исходный буфер. Что за семейство? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2006, 14:24:04
|
|||
|---|---|---|---|
|
|||
указатели, строки и функция |
|||
|
#18+
Я и написал об этом - я тож такое не помню. Все перечисленные мной функции выдают новые объекты. Не помню, правда, strcat что делает - вроде она к первому аргументу добавляет второй. Тем не менее никто не запрещает писать любые функции. Просто нужно знать, что такой substr отработает ровно один раз и испортит оригинал. Хотя я не понимаю - зачем. substr из этого примера = strncpy(newBuf,oldBuf+pos,len); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=denis283&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 630ms |
| total: | 785ms |

| 0 / 0 |
