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

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

Fuzzi

#1
Добрый день. Помогите, пожалуйста, разобраться с одной проблемой.
Требуется написать программу на С для перевода русских символов в верхний регистр.
Написал функцию.
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;
}
 
?

????

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

DAle

#3
<!--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. Отсюда и все проблемы.
 
Статус
Закрыто для дальнейших ответов.