• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Анамалии с кодировкой

  • Автор темы Fuzzi
  • Дата начала
Статус
Закрыто для дальнейших ответов.
F

Fuzzi

Добрый день. Помогите, пожалуйста, разобраться с одной проблемой.
Требуется написать программу на С для перевода русских символов в верхний регистр.
Написал функцию.
char rusToUp(char ch){
int code;
int chars = ((int)ch);
if ( chars>= 160 && chars<=175 ){
code = ( chars - 32 );
}
else if ( chars>=224 && chars<=239 ){
code = ( chars - 80 );
}
return ch;
}
Проблема в том , что ansi код русских символов выводиться(у меня) как отрицательное число, из –за этого функция не работает в чем может быть причина ?
#include <stdio.h>
int main(void){
printf(“Э = %d\n”,(int)’Э’) //выводиться -35 в чем причина ?
printf(“В = %d\n”(int)’в’) //выводит -30
return 0;
}
 
?

????

printf(“Э = %d\n”,(int)’Э’) => printf(“Э = %c\n”,(int)’Э’) ????
 
D

DAle

<!--QuoteBegin-Fuzzi+20:09:2005, 23:50 -->
<span class="vbquote">(Fuzzi @ 20:09:2005, 23:50 )</span><!--QuoteEBegin-->Добрый день. Помогите, пожалуйста, разобраться с одной проблемой.
Требуется написать программу на С для перевода русских символов в верхний регистр.
Написал функцию.
char rusToUp(char ch){
int code;
int chars = ((int)ch);
if ( chars>= 160 && chars<=175 ){
code = ( chars - 32 );
}
else if ( chars>=224 && chars<=239 ){
code = ( chars - 80 );
}
return ch;
}
Проблема в том , что ansi код русских символов выводиться(у меня) как отрицательное число, из –за этого функция не работает в чем может быть причина ?
#include <stdio.h>
int main(void){
printf(“Э = %d\n”,(int)’Э’) //выводиться -35 в чем причина ?
printf(“В = %d\n”(int)’в’) //выводит -30
return 0;
}
[snapback]25004" rel="nofollow" target="_blank[/snapback]​
[/quote]

Возможно дело в том, что сhar в зависимости от твоего компилятора может являться signed. Отсюда и все проблемы.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!