Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
1

Что-то с кодировкой

13.11.2013, 21:36. Показов 1042. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При сохранении файла выдаётся сообщение (см. картинку).
Суть цикла- проверка на принадлежность символов строки русскому, латинскому алфавиту и +пробел.
При запуске русские буквы не проходят, исключая некоторые случайные символы как 'ы' и ещё какие-то.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
 
int main(){
    int flag1=0;
    char *g,*p;
    p=new char[50];
    g=p;
 
    while (!flag1){
            printf("vvedite stroky\n");
 
            gets(g);
 
            while (*g!='\0'){
                if ((*g>='а' && *g<='я')||(*g>='А' && *g<='Я')||*g==32){
                    ++g;
                }
                else{
                    printf("Incorrect input. Try again\n");
                    break;
                }
            }
            if (*g=='\0'){
                flag1=1;
            }
    }
    printf ("%s",p);
    getchar();
 
}
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2013, 21:36
Ответы с готовыми решениями:

Что-то с кодировкой
Доброго времени суток! Решил такую задачку: #include &lt;stdio.h&gt; #define MAXLINE 1000 int...

С кодировкой базы данных и кодировкой сайтом и кодировкой файла разобраться не могу
С кодировкой базы данных и сайтом файлом разобраться не могу. Я на своем сайте вывожу данные из...

непонятки с отображением языка. что-то с кодировкой или что это?
задали выполнить сайт из 3-4 страниц. первую сделала - работает.. исходя из нее решила делать...

Что-то с кодировкой?
Всем доброго времени. Windows7 x64 стоит Apache, UserGate, Kerio Connect. В общем проблемы...

6
585 / 488 / 371
Регистрация: 05.11.2013
Сообщений: 1,265
Записей в блоге: 6
14.11.2013, 08:26 2
и чо? предлагает сохранить файл в юникоде вместо win-1251
поставь, например, числовые коды вместо букв... 'я'==255 (для русской вин-кодировки)
остальное в стандартной проге "Таблица символов" можно посмотреть

вот тут ты неправ, по-моему
C++
1
 while (*g!='\0'){
при вводе с клавы откуда возьмется байт '\0' ?
хочегь вводить посимвольно - getc
0
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
14.11.2013, 19:02  [ТС] 3
Цитата Сообщение от ПерС Посмотреть сообщение
и чо? предлагает сохранить файл в юникоде вместо win-1251
поставь, например, числовые коды вместо букв... 'я'==255 (для русской вин-кодировки)
остальное в стандартной проге "Таблица символов" можно посмотреть
Пробовал поставить ascii коды вместо русских букв. Итог тот же. При просмотре значений отладчиком русским буквам вообще присваиваются отрицательные значения хотя они char.

Цитата Сообщение от ПерС Посмотреть сообщение
вот тут ты неправ, по-моему
C++
1
 while (*g!='\0'){
при вводе с клавы откуда возьмется байт '\0' ?
хочегь вводить посимвольно - getc
gets ставит \0 в конце строки как считает
0
585 / 488 / 371
Регистрация: 05.11.2013
Сообщений: 1,265
Записей в блоге: 6
14.11.2013, 19:05 4
Цитата Сообщение от koperfild Посмотреть сообщение
отрицательные значения хотя они char
значит у тя signed char по умолчанию, и так бывает
пиши везде unsigned char
0
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
15.11.2013, 03:17  [ТС] 5
если ставить unsigned char то функция gets ругается, что unsigned char не соответствует типу аругмента функции, а именно типу char.
0
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 84
15.11.2013, 04:00 6
gets'у пофигу, что там выводит отладчик, положительное или отрицательное число, он работает с кодом символа.

А по поводу того, что программа не реагирует на русские символы - это из-за того (ну если конечно все это происходит в Win системе) программа написана в кодировке win1251 (или UTF-8), а консоль работает в кодировке DOS-866
Ну и в результате программа сравнивает коды символов разных кодировок.

Попробуйте перед запуском exe'шника выполнить в консоли команду chcp 1251

или.. хотя не знаю... в main в самом начале добавить вот такую строчку:

C
1
setlocale (0, "Rus");
0
2 / 2 / 3
Регистрация: 24.02.2013
Сообщений: 106
15.11.2013, 08:11 7
немного изменил код в visual studio все работает
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
int main()
{
    int flag1 = 0;
    char *g = malloc(50), *p;
    SetConsoleCP(1251); 
    SetConsoleOutputCP(1251);
    //setlocale(LC_ALL, "Rus");
    p = g;
    while(!flag1)
    {
        printf("vvedite stroky\n");
        gets(g);
        while(*g!='\0')
        {
            if((*g>='а' && *g<='я')||(*g>='А' && *g<='Я')||*g==32)
                ++g;
            else
            {
                printf("Incorrect input. Try again\n");
                break;
            }
        }
        if(*g=='\0')
            flag1=1;
    }
    printf("%s",p);
    getchar();
    free(p);
    return 0;
}
0
15.11.2013, 08:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2013, 08:11
Помогаю со студенческими работами здесь

что то с кодировкой
записывает вместо текста кракозябры function TForm1.WriteFile: boolean; var buf:PChar;...

Что-то с кодировкой
первый раз с таким встречаюсь, половина букв нормальные-половина нет. как это поправить?

Что с кодировкой?
Удалась возможность разжиться ПК с Виндовс. И столкнулся с непонятным. Кодировка СР1251. В консоли...

Что с кодировкой?
Помогите пожалуста. Возникла такая проблема с кодировкой. Я написал сайт. На сервере работает...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru