PriN_ce Опубликовано 5 ноября, 2009 Жалоба Поделиться Опубликовано 5 ноября, 2009 Есть некая функция, написаная мною POS(аргумент), она делает транслит, т.е. например аргумент= Машина, то она преобразует ее => Mashina. НО! Всё это хорошо когда аргумент, тобиш переменная, задается в самом коде: char st[300]="Машина"; // POS(st) переведет ее в Mashina А нужно, чтобы само слово вводил чел, sсanf() ом или gets() ом или еще как.. Здесь и начинается проблема...грубо говоря "внешняя кодировка" отличается от той, где хранится код. Помогите пожалуйста решить сие проблема)setlocale() ? За одно и вопрос: в какой кодировке в С все "выполняется", а в какой "задается" челом? :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Lion HC Опубликовано 5 ноября, 2009 Жалоба Поделиться Опубликовано 5 ноября, 2009 Консоль использует ЕОМ-кодировку. Просто перед вызовом своей функции конвертируйте параметр функцией: BOOL OemToCharA( (LPCSTR)ЕОМ-строка из консоли, выходной масив аргумента ); Ссылка на комментарий Поделиться на другие сайты Поделиться
PriN_ce Опубликовано 5 ноября, 2009 Автор Жалоба Поделиться Опубликовано 5 ноября, 2009 Твою ж мать спасибо огромное)))) я над этой траблой часа 3 наверно думал...пц )))))фуф...гора с плеч) спасибо))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Архимаг Опубликовано 5 ноября, 2009 Жалоба Поделиться Опубликовано 5 ноября, 2009 Есть некая функция, написаная мною POS(аргумент), она делает транслит, т.е. например аргумент= Машина, то она преобразует ее => Mashina. НО! Всё это хорошо когда аргумент, тобиш переменная, задается в самом коде: char st[300]="Машина"; // POS(st) переведет ее в Mashina А нужно, чтобы само слово вводил чел, sсanf() ом или gets() ом или еще как.. Здесь и начинается проблема...грубо говоря "внешняя кодировка" отличается от той, где хранится код. Помогите пожалуйста решить сие проблема)setlocale() ? За одно и вопрос: в какой кодировке в С все "выполняется", а в какой "задается" челом? :) Можете опубликовать код функции ? Любопытство :) Ссылка на комментарий Поделиться на другие сайты Поделиться
PriN_ce Опубликовано 10 ноября, 2009 Автор Жалоба Поделиться Опубликовано 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;} ааааа Ссылка на комментарий Поделиться на другие сайты Поделиться
PriN_ce Опубликовано 10 ноября, 2009 Автор Жалоба Поделиться Опубликовано 10 ноября, 2009 черт...нельзя удалть сообщения(((хд второй код тотж самый) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти