C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Простая прога с указателями
Mike.
Отправлено: 01.05.2006, 11:16


Ученик-кочегар

Группа: Участник
Сообщений: 1



Вроде все просто,но ошибку найти не могу.
Прога дожна конвертить маленкие буквы в заглавные, выдает ошибку на этапе исполнения.

CODE

#include <iostream.h>

char *string_uppercase(char* string)
{
  char *starting_address = string; // адрес string[0];
  int i=0;
  while (*(string+i))
  {  
     if ((*(string+i) >= 'a') && (*(string+i) <= 'z')) *(string+i) = *(string+i) — 'a' + 'A';
     i++;
  }

  return(starting_address);
}

main(){
   cout << string_uppercase("hello, world") << endl;
}    

Konstantine
Отправлено: 01.05.2006, 12:38


Мастер участка

Группа: Модератор
Сообщений: 545



сделай так:
CODE
#include <iostream.h>

char *string_uppercase(char* string)
{
 int i=0;
 while (string[i])
 {  
    if ((string[i] >= 'a') && (string[i] <= 'z'))
        string[i] = string[i] — 'a' + 'A';
    i++;
 }

 return string;
}

main(){
  cout << string_uppercase("hello, world") << endl;
}
это должно работать

Отредактировано Konstantine — 01/05/2006, 15:12
** Mike
Отправлено: 01.05.2006, 14:48


Не зарегистрирован







У тебя работает?
Konstantine
Отправлено: 01.05.2006, 15:14


Мастер участка

Группа: Модератор
Сообщений: 545



Уже работает smile.gif (одна скобка лишняя)
кстати — проверил Ваш вариант — он тоже рабочий

поэтому давайте подробнее — как именно это "не работает" проявляется
Guest
Отправлено: 01.05.2006, 17:47


Не зарегистрирован







Обычная ошибка типа "Приложение совершило недопустимую операцию".Но это не на билдере,на 2-х других компилляторах-Dev-cpp и MS Visual Studio. На билдере все заработало.Странно.
Konstantine
Отправлено: 01.05.2006, 21:59


Мастер участка

Группа: Модератор
Сообщений: 545



к сожелению другого компилятора у меня нет.
но могу лишь посоветовать не использовать iostream.h
попробуйте воспользоваться другой библиотекой, например stdio.h и тогда анологичная функция в main:
CODE
printf("%s\n",string_uppercase("hello, world"));
Asher
Отправлено: 02.05.2006, 08:20


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.

ohmy.gif Беспрецендетно наглое использование строкового литерала не по назначению.
Всем читать Страуструпа.
5.2.2. Строковые литералы.

Вернуться в Вопросы программирования в C++Builder