[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: setlocale(3) + ctype(3) in FreeBSD



Привет !

On Thu, May 04, 2000 at 06:41:52PM +0400, Sergei Barbarash wrote:
 
Ответ прост -- приведение типов.

> #include <stdio.h>
> #include <locale.h>
> #include <ctype.h>
> 
> int main(int argc, char **argv) {

    int i;
> 
>   printf("setlocale: %s\n", setlocale(LC_ALL, "ru_RU.KOI8-R"));
> 
>   if (!argv[1])
>     printf("Usage: %s <word>\n", argv[0]);
>   else {
      i = (unsigned char)argv[1][0];  
      printf("isalnum('%c'): %d\n", i, isalnum(i));
      printf("isprint('%c'): %d\n", i, isprint(i));
      printf("toupper('%c'): '%c'\n", i, toupper(i));
>   }
>   return 0;
> }

А в твоем случае получалось, что параметром isalnum(), isprint() и toupper()
было отрицательное число. И результат был соответственным.

-- 
/* Alexey Zelkin                       && phantom@cris.net    */
/* Tavric National University          && phantom@crimea.edu  */
/* http://www.ccssu.crimea.ua/~phantom && phantom@FreeBSD.org */