Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
koperfild
9 / 9 / 6
Регистрация: 04.12.2011
Сообщений: 137
1

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

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

При сохранении файла выдаётся сообщение (см. картинку).
Суть цикла- проверка на принадлежность символов строки русскому, латинскому алфавиту и +пробел.
При запуске русские буквы не проходят, исключая некоторые случайные символы как 'ы' и ещё какие-то.
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
Изображения
 
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 21:36
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

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

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

C
1
setlocale (0, "Rus");
0
viktorius
2 / 2 / 3
Регистрация: 24.02.2013
Сообщений: 105
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2013, 08:11

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

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

Что с кодировкой?
Добрый день, разбираюсь с кодировкой. От чего может быть такое: в php - файле задано: &lt;meta...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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