Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Vega251
289 / 92 / 3
Регистрация: 07.09.2011
Сообщений: 473
Записей в блоге: 2
#1

Почему срабатывает rtl - C++

23.09.2012, 18:24. Просмотров 315. Ответов 9
Метки нет (Все метки)

Не могу понять, в чем ошибка. Брат делает задания из одной книги и на одной из функций VC++ падает. Я уже долго не работал с C++, может быть, уже что-то забыл и поэтому прошу вас посмотреть этот дурацкий код:
C++
1
2
3
4
5
6
7
8
9
void eatspace (char* str)
{
    int i=0,j=0;
    while ((*(str+i) = *(str+j++))!='\0')
        if (*(str+i)!=' ') 
            i++;
    return;
 
}
Функция просто удаляет пробелы из строки. Ничего сложного, но я не могу найти здесь ошибку, хотя она есть. Действительно, после жабы уже с указателями работать как-то не комфортно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 18:31     Почему срабатывает rtl #2
Цитата Сообщение от Vega251 Посмотреть сообщение
void eatspace (char* str)
исправте на
C++
1
void eatspace (char* &str)
и тут не совсем получается удаление, скорее сохраненеие до 1 пробела
а не лучше сделать это функцией и формироват новую строку?
Vega251
289 / 92 / 3
Регистрация: 07.09.2011
Сообщений: 473
Записей в блоге: 2
23.09.2012, 18:38  [ТС]     Почему срабатывает rtl #3
Цитата Сообщение от Nixy Посмотреть сообщение
и тут не совсем получается удаление, скорее сохраненеие до 1 пробела
Да, мне тоже так думается, да вот только братец делает все по книжке Хортона, а я "жабист, который ни хрена не шарит в приплюснутом си". Мой вариант такой функции ему не подходит.
Сейчас я сам протестирую вашу поправку. В любом случае, спасибо.
DU
1479 / 1055 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.09.2012, 18:40     Почему срабатывает rtl #4
в чем ошибка то заключается?
вот вроде работает:
http://liveworkspace.org/code/392bd6...494ab72cea7d44
Nixy
ComfyMobile
 Аватар для Nixy
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 18:43     Почему срабатывает rtl #5
ну жабист не жабист, если программное мышление есть , то подход должен быть более гибким

Не по теме:

а ни чо что Java очень много взяла из С++

Vega251
289 / 92 / 3
Регистрация: 07.09.2011
Сообщений: 473
Записей в блоге: 2
23.09.2012, 18:46  [ТС]     Почему срабатывает rtl #6
Цитата Сообщение от DU Посмотреть сообщение
в чем ошибка то заключается?
вот вроде работает:
Хотите верьте, хотите нет, но ни на одном компиляторе что у брата, что у меня эта функция сразу же вызывает срабатывание rtl. Поэтому я и обратился за помощью, т.к. все вроде бы верно.
Nixy
ComfyMobile
 Аватар для Nixy
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 18:47     Почему срабатывает rtl #7
Цитата Сообщение от DU Посмотреть сообщение
в чем ошибка то заключается?
вот вроде работает:
http://liveworkspace.org/code/392bd6...494ab72cea7d44
опа и правда работает
а я чушь написал
DU
1479 / 1055 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.09.2012, 18:49     Почему срабатывает rtl #8
использование [] все таки более привычно глазу. меньше мельтешаших скобочек, плюсиков и звездочек:
C++
1
2
3
4
5
6
7
8
9
void eatspace (char* str)
{
  int i=0,j=0;
  while ((str[i] = str[j++]) != '\0')
  {
    if (str[i] != ' ') 
      i++;
  }
}
Nixy
ComfyMobile
 Аватар для Nixy
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 18:51     Почему срабатывает rtl #9
Цитата Сообщение от Vega251 Посмотреть сообщение
Хотите верьте, хотите нет, но ни на одном компиляторе что у брата, что у меня эта функция сразу же вызывает срабатывание rtl. Поэтому я и обратился за помощью, т.к. все вроде бы верно.
а покажите код ошибки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 18:54     Почему срабатывает rtl
Еще ссылки по теме:

Почему не срабатывает EOF C++
C++ Почему не срабатывает конструктор копирования в пользовательском классе
C++ Почему не срабатывает getline() ?
C++ Непонятно почему каждый раз срабатывает исключение
Почему деструктор срабатывает больше раз, чем количество созданных объектов? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Vega251
289 / 92 / 3
Регистрация: 07.09.2011
Сообщений: 473
Записей в блоге: 2
23.09.2012, 18:54  [ТС]     Почему срабатывает rtl #10
Действительно, работает. Проверил на Линуксе. Значит, какой-то глюк в VC++ 2010 Express, странно только, что он не сработал и у меня.
Ладно, всем откликнувшимся спасибо
Yandex
Объявления
23.09.2012, 18:54     Почему срабатывает rtl
Ответ Создать тему
Опции темы

Текущее время: 01:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru