|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.05.2010, 12:31 | #1 |
Пользователь
Регистрация: 12.05.2010
Сообщений: 61
|
Не работает "русификатор"
При работе с С++ Builder 6 столкнулся с проблемой: функция rus вторично не совсем корректно работает:
#pragma hdrstop #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> //--------------------------------------------------------------------------- char* rus (char* str) ; // преобразует ANSI-строку в строку ASCII #pragma argsused int main(int argc, char* argv[]) { int i; M1: printf(rus("Для получения кодового слова, закодированного кодом с повторениями нажмите '1'.\n")); printf(rus("Для декодирования вектора нажмите '2'.\n")); printf(rus("Для декодирования вектора, с использованием таблицы смежных классов нажмите '3'.\n")); printf(rus("Для декодирования векторов ошибок нажмите '4'.\n")); printf(rus("Для декодирования векторов ошибок с использованием таблицы смежных классов нажмите '5'.\n")); printf(rus("Для выхода из программы нажмите '6'.\n")); printf(rus("Введите команду: ")); scanf("%d", &i); switch(i) { case 6: return 1; default: { printf(rus("Введена некорректная команда.\n")); goto M1; } } } char* rus(char* str) { unsigned char *p=str; while (*p) { if (*p>=192) // здесь русская буква if ((*p)<=239) // А, Б, ... Я, а, б, ... п (*p)-=64; else // p ... я (*p)-=16; p++; } return str; } |
12.05.2010, 13:28 | #2 | ||
Заблокирован
Регистрация: 05.05.2010
Сообщений: 40
|
Цитата:
Цитата:
|
||
12.05.2010, 22:12 | #3 |
Пользователь
Регистрация: 12.05.2010
Сообщений: 61
|
Спасибо всем, кто попытался помочь!
char* rus(char* str) { unsigned char *p=NULL; char *str2=""; strcpy(str2,str); p=str2; /* при объявлении символов как char русские буквы кодируются отрицательными числами */ while (*p) { if (*p>=192) // здесь русская буква if ((*p)<=239) // А, Б, ... Я, а, б, ... п (*p)=(*p)-64; else // p ... я (*p)=(*p)-16; p++; } return str2; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не работает "русификатор" | ТриСемёрки | C++ Builder | 3 | 12.05.2010 12:56 |
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. | Каравай | Microsoft Office Excel | 13 | 17.02.2010 09:53 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Почему не работает Case txt Like "текст1", "текст2" | Oooleg | Microsoft Office Excel | 2 | 15.07.2009 10:08 |