Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2010, 19:17   #1
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию Вопрос по указателям

В учебнике Дейтелов нашел код:

Код:
void convertToUppercase(char *);

int main()
{
   char string[] = "characters and $32.98";

   cout << rustext("Строка до преобразования: ") << string;
   convertToUppercase(string);
   cout << "\n" << rustext("Строка после преобразования: ")
        << string << endl;

   system("pause");
   return 0;
}

void convertToUppercase(char *sPtr)
{
   while (*sPtr != '\0')
   {
      if (islower(*sPtr))
         *sPtr = toupper(*sPtr); //переход на верхний регистр

      ++sPtr; //перемещение sPtr к следующему символу
   }
}
Убрал из него указатели:

Код:
void convertToUppercase(char);

int main()
{
   char string[] = "characters and $32.98";

   cout << rustext("Строка до преобразования: ") << string;
   convertToUppercase(string);
   cout << "\n" << rustext("Строка после преобразования: ")
        << string << endl;

   system("pause");
   return 0;
}

void convertToUppercase(char sPtr)
{
   while (sPtr != '\0')
   {
      if (islower(sPtr))
         sPtr = toupper(sPtr); //переход на верхний регистр

      ++sPtr; //перемещение sPtr к следующему символу
   }
}
Вопрос: если все работает и без указателей, что хотели показать авторы их использованием?
fs444 вне форума Ответить с цитированием
Старый 08.08.2010, 19:47   #2
deviart
 
Регистрация: 08.08.2010
Сообщений: 8
По умолчанию

Исходный вариант функции convertToUppercase принимает адрес первого символа строки и меняет строку. Твой вариант этой функции ничего не делает, а именно: он принимает символ (не адрес, а символ), и пока этот символ не станет равным нулевому символу, приводит его к верхнему регистру и увеличивает код этого символа на единицу (на том, что в качестве параметра передано, это никак не отражается).

И ещё - в качестве символа ты передаёшь указатель на символ. Если это компилится, то меняй компилятор.
deviart вне форума Ответить с цитированием
Старый 16.08.2010, 23:07   #3
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Цитата:
Исходный вариант функции convertToUppercase принимает адрес первого символа строки и меняет строку.
Ага, он двигается по строке, увеличивая адрес на единицу, да?

Цитата:
Если это компилится, то меняй компилятор.
Пффф, щас запускаю, не компилит. А раньше работало. Может тогда сделал че не так. Например, вернул предыдущее действие случайно =)
fs444 вне форума Ответить с цитированием
Старый 16.08.2010, 23:50   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

У кого есть рабочий вариант перевод строки в верхний регистр работающий относительно везде, включая русские символы, и длинной решения < 100 строчек ? )
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 17.08.2010, 00:02   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2ozo
у std::string-a?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 17.08.2010, 00:08   #6
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

интересует char* или std::string, у меня есть рабочее решение, но оно слишком громоздко для такой простой вещи
с wchar_t* и std::wstring всё делается быстро и хорошо =)
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на С++ по указателям AquaticSoul Помощь студентам 2 21.12.2009 10:23
вопрос по указателям Juffin Общие вопросы Delphi 2 24.11.2009 20:03
Поясните передачу значений по указателям fs444 Общие вопросы C/C++ 6 30.10.2009 10:52
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10