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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2013, 20:33   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Проверка на русские симолы

Как проверить строку на русские символы?
Praud вне форума Ответить с цитированием
Старый 12.12.2013, 20:41   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

В Windows-1251 русские буквы - от C0 до FF, или в (10) - больше 191.
Кроме буквы Ёё
type_Oleg вне форума Ответить с цитированием
Старый 12.12.2013, 20:46   #3
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

то есть
Код:
char *str;
 gets(str);
 for(int i=0;i<strlen(str);i++)
 {
   if(str[i]>='C0' && str[i]<='FF')
   //Русский символ?
}
У меня как раз кодировка 1251.
Praud вне форума Ответить с цитированием
Старый 12.12.2013, 21:06   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Если с кавычками, огда уж так
Код:
 if(str[i]>='А' && str[i]<='я')
Или без кавычек
Код:
 if(str[i]>=0xC0 && str[i]<=0xFF)
И буквы Ё,ё не забыть - соотв. 0xA8, 0xB8
type_Oleg вне форума Ответить с цитированием
Старый 12.12.2013, 21:30   #5
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Написал - не работает. Вариант с множеством от 'A' до 'я' тоже

Код:
for(i=0;i<strlen(str);i++)
	{
		if(str[i]>=0xC0 && str[i]<=0xFF)
		{
			printf("Рус");
		}
	}
Praud вне форума Ответить с цитированием
Старый 12.12.2013, 21:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У меня так:
Код:
#include <iostream>

using namespace std;

int main()
{
    char *s="hello миgg";
    for(int i=0;s[i];i++)
     if(s[i]>='А' && s[i]<='я') {cout<<"yes"; break;}
    return 0;
}
работает без проблем
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.12.2013, 22:16   #7
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
У меня так:
Код:
#include <iostream>

using namespace std;

int main()
{
    char *s="hello миgg";
    for(int i=0;s[i];i++)
     if(s[i]>='А' && s[i]<='я') {cout<<"yes"; break;}
    return 0;
}
работает без проблем
Проверю чуть позже, а что означает ограничение s[i]? по мне так это бесконечный цикл.
Praud вне форума Ответить с цитированием
Старый 12.12.2013, 22:19   #8
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Praud Посмотреть сообщение
.. а что означает ограничение s[i]?
В Си 0 значит "ложь" . А любая строка кончается нулем.
type_Oleg вне форума Ответить с цитированием
Старый 12.12.2013, 22:24   #9
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
В Си 0 значит "ложь" . А любая строка кончается нулем.
так строка заканчивается '\0'
и при каждой итерации цикла i увеличивается на 1, то есть 0 не может же быть i
Praud вне форума Ответить с цитированием
Старый 12.12.2013, 22:30   #10
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Если строка из 3-х символов 01я, то в памяти, в 16-коде:
30 31 FF 00 , и дальше - неважно что.
Значение 00 - всегда признак того, что строка кончилась. Если с переменной работать, как со строкой.
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из текстового файла,содержащего русские и латинские слова создать 2 новых файла: 1-й-русские,2-й - латинские (паскаль для девушки) beygul Помощь студентам 5 28.03.2012 14:26
исправить ошибку, симолы (с++) jambas92 Помощь студентам 0 28.11.2010 08:43
Русские символы Akord Общие вопросы C/C++ 0 26.09.2010 11:17
VBasic Симолы VadEr Помощь студентам 1 23.05.2010 03:19
русские буквочки elka Помощь студентам 4 09.01.2010 03:49