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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 108, средняя оценка - 4.88
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
#1

Функции tolower,islower,isupper - C++

06.09.2009, 00:03. Просмотров 14198. Ответов 35
Метки нет (Все метки)

Если кто знаком с функциями tolower,islower,isupper, дайте пожалуйста с каждой примитивный пример с маленьким коментом, как их использовать. Зараннее благодарю. ПО книге не понимаю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2009, 00:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции tolower,islower,isupper (C++):

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

Найти первые вхождения символов (функции strchr(), tolower()) - C++
В массиве строк , введенных пользователем , найти первые вхождения символов ' s ' и 'S' . Использовать функции strchr ( ) , tolower ( ) .

не работает функция isupper() - C++
Доброе утро!У меня в программе не работает функция isupper(): for(int index = 0; index < strlen(str); index++) { ...

Функция islower - C++
#include <iostream> // для оператора cout #include <cctype> // для функции islower using namespace std; int main(){ char c; ...

Функция islower() - C++
Функция islower() возвращает 2 при любой вводимой строчной букве,так и должно быть?Я знаю,что функция выводит ненулевое значение,если буква...

Функция islower() - C++
Подскажите пожалуйста пример работы этой функции , в программе Visual Studio 2012 C++ (Консольный проект). В учебнике написано нужно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
07.09.2009, 19:57  [ТС] #16
Спасибо большое, оказывается необходимо нужно было набрать строку,
setlocale( LC_ALL, "" );
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
07.09.2009, 20:08 #17
Возможно еще unsinged char buf[] помог
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
07.09.2009, 21:08  [ТС] #18
А, нет char buf[] всё-таки.

Добавлено через 4 минуты
Вы не скажите,что означает (char*)buf
из строки:
C++
1
strcpy( (char*)buf, "Сникерс Настоящий" );
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
07.09.2009, 21:20 #19
g++ выдал warning на разные типы
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
07.09.2009, 21:24  [ТС] #20
Я вообще спросил про вот это,чо оно такое:
C++
1
(char*)buf
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
07.09.2009, 21:26 #21
Так ты не понял
g++ выдал warning на разные типы, чтобы его подавить я сделал преобразование типов.
А именно buf преобразовал к типу (char*)
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
07.09.2009, 23:34  [ТС] #22
Попробывал просто, не изменять свою программу, а заменил char на unsigned char
и всё заработало, странно, вроде ничего не корректировал, а оставил всё как есть, просто заменил тип.
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 437
18.11.2009, 03:19 #23
Только я убедился работая на C что isupper возможно и islower не работает с русскими буквами!!
Bloomfield
2 / 2 / 1
Регистрация: 16.11.2009
Сообщений: 51
20.12.2009, 20:31 #24
что то не работает toupper

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <ctype.h>
#include <iostream.h>
int main ()
{
    int i;
    char A[100];
    FILE *InputFile;
    InputFile = fopen ("input.txt", "r");
    if (InputFile == NULL) {
        printf ("Error open file\n");
        return 0;
    }
    for (i=0;;i++)
        A[i] = getc(InputFile);
    for (i=0;;i++)
        if (isspace(A[i] == 1)
            toupper (A[i+1]);
    for (i=0;i<50;i++)
        printf ("%c", A[i]);
    system ("PAUSE");
}
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
20.12.2009, 21:13 #25
Цитата Сообщение от Bloomfield Посмотреть сообщение
C
1
2
for (i=0;;i++) 
    A[i] = getc(InputFile);
A[997] == EOF
A[998] == EOF
A[999] == EOF
...
Bloomfield
2 / 2 / 1
Регистрация: 16.11.2009
Сообщений: 51
20.12.2009, 21:48 #26
чёт непонял
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
20.12.2009, 21:52 #27
У тебя бесконечный цикл.
Bloomfield
2 / 2 / 1
Регистрация: 16.11.2009
Сообщений: 51
20.12.2009, 21:55 #28
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <ctype.h>
//#include <iostream.h>
int main ()
{
    int i;
    char A[100];
    FILE *InputFile;
    InputFile = fopen ("C:\\input.txt", "r");
    /*if (InputFile == NULL) {
        printf ("Error open file\n");
        return 0;
    }*/
    for (i=0;i<100;i++)
        fscanf (InputFile, "%c", &A[i]);
    for (i=0;i<100;i++)
        if (isspace(A[i] == 1)
            A[i+1] = toupper( A[i+1] );
    for (i=0;i<50;i++)
        printf ("%c", A[i]);
    //system ("PAUSE");
}
всё равно что то ругается на [
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
20.12.2009, 22:19 #29
Цитата Сообщение от Bloomfield Посмотреть сообщение
C
1
2
3
for (i=0;i<100;i++) 
    if (isspace(A[i] == 1) 
        A[i+1] = toupper( A[i+1] );
При i равном 99 "A[i+1]" - выход за границу массива

Цитата Сообщение от Bloomfield Посмотреть сообщение
C
1
2
for (i=0;i<100;i++) 
    fscanf (InputFile, "%c", &A[i]);
лучше как-то так переписать:
C
1
2
3
4
5
6
7
...
int c;
...
i = 0;
while ( ( c = fgetc(InputFile) ) != EOF && i < 100 )
    A[i++] = c;
...
Bloomfield
2 / 2 / 1
Регистрация: 16.11.2009
Сообщений: 51
21.12.2009, 05:51 #30
всё равно, там где строка с toupper, пишет "error: syntax error before `[' token"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2009, 05:51
Привет! Вот еще темы с ответами:

Ошибка с islower - C++
void func(char a) { char *b; for(int i = 0; i&lt;20; i++) { b=&amp;a; if(islower(a)) { cout&lt;&lt;(void*)b&lt;&lt;&quot;\n&quot;; ...

помогите с islower() и setfill() - C++
1)Библиотечная функция islower() принимает в качестве аргумента один символ (букву) и возвращает ненулевое целое значение в том случае,...

функция tolower() - C++
Необходимо изменить регистр на нижний. Как только не пробовал не получается. Получается если я задаю строку заранее, что на русском что...

Как реализовать tolower()? - C++
Подскажите, пожалуйста, как применить функцию tolower() к переменной типа vector&lt;int&gt;::size_type Вот фрагмент кода, приводящий к ошибке:...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.12.2009, 05:51
Ответ Создать тему
Опции темы

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