[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 */