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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.75
Pront0
Сообщений: n/a
#1

Кодировка в C - C++

05.11.2009, 20:13. Просмотров 3618. Ответов 2
Метки нет (Все метки)

Есть некая функция, написаная мною POS(аргумент), она делает транслит, т.е. например аргумент= Машина, то она преобразует ее => Mashina.
НО!
Всё это хорошо когда аргумент, тобиш переменная, задается в самом коде:
char st[300]="Машина"; // POS(st) переведет ее в Mashina

А нужно, чтобы само слово вводил чел, skanf() ом или gets() ом или еще как..
Здесь и начинается проблема...грубо говоря "внешняя кодировка" отличается от той, где хранится код. Помогите пожалуйста решить сие проблема)setlocale() ?

За одно и вопрос: в какой кодировке в С все "выполняется", а в какой "задается" челом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2009, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кодировка в C (C++):

Кодировка - C++
Все привет #include <iostream> #include <conio.h> using namespace std; //Прототипы функций void...

Кодировка - C++
Мне нужно, чтобы консольная программа закрывалась после ввода определённой строки.Так вот на английском всё прекрасно работает при вводе...

Кодировка koi8-r - C++
Всем привет! поискал по всему интернету про кодировку koi8-r нашел кое-что про нее, но чем отличается работа в ней от других кодировок? ...

Сбивается кодировка - C++
При вводе и поиске английского слова, все нормально, на русском сбивается кодировка, как это решить? Заранее благодарен. #include...

кодировка символов - C++
Всем привет! Столкнулся с такой проблемкой: есть поле unsigned char в него я и ввожу параметр значения, однако необходимо чтобы...

Кодировка ASII - C++
Привет, честной народ! У меня такой вопрос. Дан символьный массив, где храниться шестнадцатеричное число. Как мы все знаем, "принимать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
05.11.2009, 20:18 #2
Используй CharToOemA и OemToChar. Для справки в коде - это char, с консоли - OEM. Т.е. чтобы ввод с консоли совпал со словом введенным в коде, то или введенное слово преобразовываешь с помощью OemToChar или же слово заданное в коде преобразовываешь с помощью CharToOemA. Обе лежат в windows.h
Pront0
Сообщений: n/a
05.11.2009, 21:17 #3
Блин, не получается((
вобщем вот код
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include<locale.h>
#include <windows.h>
 
 
void POS(char* str){     //функция которая печатает str на русс в английском виде
   char sloj_rus[16]="жцчшщьюяЖЦЧШЩЬЮЯ" ;
    char *sloj_eng[16] = {"zh","ts","ch","sh","shch","'","yu","ya","ZH","TS","CH","SH","SHCH","'","YU","YA"};
    char st_1[72]=" !@#$%^&*()_+-|=':;?<>абвгдеёзийклмнопрстуфхъыэАБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ";
   char st_2[72]=" !@#$%^&*()_+-|=':;?<>abvgdeeziyklmnoprstufh'ieABVGDEEZIYKLMNOPRSTUFH'IEI";
    
           int l,j,i,k=0,pam=strlen(str);
    
 
    for (i=0;i<pam;i++){
        for(j=0;j<72;j++){
            if (str[i]==st_1[j]) {
                printf("%c",st_2[j]);
                             };
                   };
        for(l=0;l<16;l++){
            if (str[i]==sloj_rus[l]) {
                printf("%s",sloj_eng[l]);
                                 };
                   };
        }
    
}
            
    
 
int main() {
 
    char st[300],st_p[300];     
    
 
    gets(st);    
    OemToChar(st,st_p);
    printf("%s\n",st_p);
 
    
    POS(st_p);
    
 
    getchar();
   return 0;
     
}
если за место gets(st) написать, что st уже чему то равно, то все работает...не пойму никак..где ошибка?

Добавлено через 29 минут
Всё разобрался, в 42 строчке надо быол А дописать в фун-ии: OemToCharA) M128K145 sps))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2009, 21:17
Привет! Вот еще темы с ответами:

Кодировка знака ± - C++
В общем, надо вывести в консоль такой знак ±. Какую кодировку для этого нужно использовать?

кодировка Хаффмана - C++
Дорогие программисты. Вот был написан код &quot;кодировка Хаффмана&quot;, и тут мы вводим количество данных и их частоту. Но я не могу то ли...

Кодировка в консоли - C++
Добрый день , имея некоторый опыт программирования на c# решил так же изучить С++, однако при написании простейшей программ (консольные...

Кодировка слетела! - C++
У меня беда!( Создал класс с ресурсами, закинул туда иконки, потом увидел в ресурсе свои иконки и файлик mainwindow.cpp и вот дело в том,...


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

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

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