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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
larry
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 59
#1

не работает функция isupper() - C++

31.07.2009, 10:17. Просмотров 1977. Ответов 12
Метки нет (Все метки)

Доброе утро!У меня в программе не работает функция isupper():
C++
1
2
3
4
5
for(int index = 0; index < strlen(str); index++)
{
if(isupper(*(str+index)))
count_symbol++;
}
При компиляции все нормально,ошибок нет,но после запуска останавливается программа и появляется окно с ошибкой Expressionunsigned)(c+1) <= 256....

И еще такой вопрос: почему компилятор vislual studio 2005 выдает предупреждение при использовании strcpy, strcat...пишет что нужно использовать strcpy_s, strcat_s...из-за того что там идет проверка на переполнение буфера?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2009, 10:17     не работает функция isupper()
Посмотрите здесь:

Функции tolower,islower,isupper - C++
Если кто знаком с функциями tolower,islower,isupper, дайте пожалуйста с каждой примитивный пример с маленьким коментом, как их...

Out of range при использовании islower, isupper - C++
Ошибка вылезает при использовании islower, isupper. В первом варианте кода использовал такой вариант: bool pre_oxide_1,pre_oxide_2; ...

Не работает функция в С++ - C++
Всем привет! Вот мне надо написать функцию, которая находит максимальное среди трёх введённых чисел. Я вот накинул программку и прошу...

Не работает функция - C++
Не работает функция write класса Losers. Вызов происходит в 60-й строчке. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt;...

Не работает функция gets() - C++
Компилятор не розпознает функцию gets(); Это пример из книги Г.Шилдта &quot;С++: базовый курс&quot;. #include&lt;iostream&gt; ...

Не работает функция - C++
#include &lt;iostream&gt; using namespace std; int main() { system(&quot;color 4&quot;); base(4); system(&quot;pause&quot;); return...

Не работает функция - C++
// Example program #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; using namespace std; int main() { float x=0.2; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
31.07.2009, 10:20     не работает функция isupper() #2
Цитата Сообщение от larry Посмотреть сообщение
появляется окно с ошибкой Expressionunsigned)(c+1) <= 256.
символ, который в текущий момент поступает на вход функции isupper является некорректным. и невозможно осуществить его анализ.
larry
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 59
31.07.2009, 10:34  [ТС]     не работает функция isupper() #3
это может быть из-за использования русского шрифта?
Как это устранить?

Добавлено через 2 минуты 35 секунд
только что проверил...и точно она так реагирует на русский язык...Тогда остается вопрос как это обойти?Может есть еще какие-нибудь функции...скажем в winapi?
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
31.07.2009, 10:37     не работает функция isupper() #4
Цитата Сообщение от larry Посмотреть сообщение
Тогда остается вопрос как это обойти?
напишите свою функцию. для анализа русских букв.
larry
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 59
31.07.2009, 10:43  [ТС]     не работает функция isupper() #5
Спасибо

Добавлено через 31 секунду
будем работать над этим...
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
01.08.2009, 14:13     не работает функция isupper() #6
str - это что ?
Полный код покажи.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
01.08.2009, 15:39     не работает функция isupper() #7
Цитата Сообщение от odip Посмотреть сообщение
str - это что ?
вероятней всего - это строка.
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
01.08.2009, 15:42     не работает функция isupper() #8
Надо не вероятнее всего, а что именно он там написал
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
01.08.2009, 16:05     не работает функция isupper() #9
Цитата Сообщение от odip Посмотреть сообщение
Надо не вероятнее всего, а что именно он там написал
можно и так додуматься.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <cstring>
#include <cctype>
 
int main()
{
  char *str = "Привет";
  int count_symbol = 0;
 
  for(int index = 0; index < strlen(str); index++)
    if(isupper(*(str+index))) count_symbol++;   
}
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
01.08.2009, 16:27     не работает функция isupper() #10
Тогда правильно будет так. Находит заглавную русскую букву "П" в слове "Привет".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstring>
#include <cctype>
#include <iostream>
 
int main( void ) {
 
char *str = "Привет";
int count_symbol = 0;
 
 
setlocale( LC_ALL, "" ); 
 
for( int index = 0; index < strlen(str); index++ ) {
    if ( isupper( (unsigned char)str[index] ) ) { count_symbol++; }
}
 
std::cout <<"count_symbol= " <<count_symbol <<"\n";
 
} // main()
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
01.08.2009, 17:26     не работает функция isupper() #11
odip, интересно, не знал, что isuppper работает для русского алфавита.
но лучше так:
C++
1
2
3
4
5
6
_locale_t locale = _create_locale(LC_ALL, "Russian_Russia.1251");
 for( int index = 0; index < strlen(str); index++ ) {  
   int letter = (unsigned char)str[index];        
   if ( _isupper_l(letter,  locale) ) { count_symbol++; }
 }
 _free_locale(locale);
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
01.08.2009, 17:28     не работает функция isupper() #12
не знал, что isuppper работает для русского алфавита
Многие стандартные функции из ctype работают с локалью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 15:08     не работает функция isupper()
Еще ссылки по теме:

не работает функция! - C++
Задание таково: &quot;площадь треугольника, заданного координатами своих вершин, находится по формуле S=0.5*lx1y2+x2y3+x3y1-x1y3-x2y1-x3y2l...

Не работает функция if - C++
Я не совсем понимаю, как мне заставить if сравнить значение переменной output1 с заданной заранее строкой. А после нахождения совпадения,...

Не работает функция! - C++
Получает имя файла и возвращает позицию слова наибольшей длины. На экран выводится слово наибольшей длины. Но почемуто функция не работает!...

Не работает функция - C++
Добрый день. Потихоньку изучаю ООП. И столкнулся с такой проблемой: Есть два файла: 1)#include &quot;BOOK.h&quot; int main() { ...

Почему-то на работает функция!( - C++
Задача написать функцию, упорядочивающую массив по возрастанию. почему-то не работает((( #include &quot;stdio.h&quot; int FUNC_Vozr (int...


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

Или воспользуйтесь поиском по форуму:
nazarevic
Сообщений: n/a
03.05.2011, 15:08     не работает функция isupper() #13
какой хедер для _locale_t? thanks.
Yandex
Объявления
03.05.2011, 15:08     не работает функция isupper()
Ответ Создать тему
Опции темы

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