PriN_ce Posted November 5, 2009 Report Share Posted November 5, 2009 Есть некая функция, написаная мною POS(аргумент), она делает транслит, т.е. например аргумент= Машина, то она преобразует ее => Mashina. НО! Всё это хорошо когда аргумент, тобиш переменная, задается в самом коде: char st[300]="Машина"; // POS(st) переведет ее в Mashina А нужно, чтобы само слово вводил чел, sсanf() ом или gets() ом или еще как.. Здесь и начинается проблема...грубо говоря "внешняя кодировка" отличается от той, где хранится код. Помогите пожалуйста решить сие проблема)setlocale() ? За одно и вопрос: в какой кодировке в С все "выполняется", а в какой "задается" челом? :) Link to comment Share on other sites More sharing options...
Lion HC Posted November 5, 2009 Report Share Posted November 5, 2009 Консоль использует ЕОМ-кодировку. Просто перед вызовом своей функции конвертируйте параметр функцией: BOOL OemToCharA( (LPCSTR)ЕОМ-строка из консоли, выходной масив аргумента ); Link to comment Share on other sites More sharing options...
PriN_ce Posted November 5, 2009 Author Report Share Posted November 5, 2009 Твою ж мать спасибо огромное)))) я над этой траблой часа 3 наверно думал...пц )))))фуф...гора с плеч) спасибо))) Link to comment Share on other sites More sharing options...
Архимаг Posted November 5, 2009 Report Share Posted November 5, 2009 Есть некая функция, написаная мною POS(аргумент), она делает транслит, т.е. например аргумент= Машина, то она преобразует ее => Mashina. НО! Всё это хорошо когда аргумент, тобиш переменная, задается в самом коде: char st[300]="Машина"; // POS(st) переведет ее в Mashina А нужно, чтобы само слово вводил чел, sсanf() ом или gets() ом или еще как.. Здесь и начинается проблема...грубо говоря "внешняя кодировка" отличается от той, где хранится код. Помогите пожалуйста решить сие проблема)setlocale() ? За одно и вопрос: в какой кодировке в С все "выполняется", а в какой "задается" челом? :) Можете опубликовать код функции ? Любопытство :) Link to comment Share on other sites More sharing options...
PriN_ce Posted November 10, 2009 Author Report Share Posted November 10, 2009 Можете опубликовать код функции ? Любопытство :) Конечно...ток сиьлно не бейте)) :) #include <stdio.h>#include <windows.h>void POS(char* 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,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);OemToCharA(st,st_p);POS(st_p);getchar();return 0;} Конечно...ща польется критика)) :) #include <stdio.h>#include <windows.h>void POS(char* 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,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);OemToCharA(st,st_p);POS(st_p);getchar();return 0;} ааааа Link to comment Share on other sites More sharing options...
PriN_ce Posted November 10, 2009 Author Report Share Posted November 10, 2009 черт...нельзя удалть сообщения(((хд второй код тотж самый) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now