I have a program that needs the locale support, so I include 'locale.h'. I make the program but the output was wrong.
With the cygwin library the setlocale function do not work, but if I link with mingw library it is ok I am sending a sample program that demonstrate the error.
Linking with CYGWIN:
[EMAIL PROTECTED] /usr/src/testes/locale/msdn
$ gcc -o crt_locale crt_locale.c [EMAIL PROTECTED] /usr/src/testes/locale/msdn
$
$ ./crt_locale.exe
In German locale, strftime returns 'x'
No Brasil locale, strftime retorna 'x'
In 'C' locale, strftime returns 'x'
[EMAIL PROTECTED] /usr/src/testes/locale/msdn
$
Linking with MINGW (-mno-cygwin) [EMAIL PROTECTED] /usr/src/testes/locale/msdn $ gcc -mno-cygwin -o crt_locale crt_locale.c [EMAIL PROTECTED] /usr/src/testes/locale/msdn $ $ ./crt_locale.exe In German locale, strftime returns 'Sonntag, 07. Dezember 2003' No Brasil locale, strftime retorna 'domingo, 07 de dezembro de 2003' In 'C' locale, strftime returns 'Sunday, December 07, 2003' [EMAIL PROTECTED] /usr/src/testes/locale/msdn $
Thanks, Marcelo Modolo
// crt_locale.c /* Sets the current locale to "Germany" using the * setlocale function and demonstrates its effect on the strftime * function. */
#include <stdio.h> #include <locale.h> #include <time.h> int main(void) { time_t ltime; struct tm *thetime; unsigned char str[100]; setlocale(LC_ALL, "German"); time (<ime); thetime = gmtime(<ime); /* %#x is the long date representation, appropriate to * the current locale */ if (!strftime((char *)str, 100, "%#x", (const struct tm *)thetime)) printf("strftime failed!\n"); else printf("In German locale, strftime returns '%s'\n", str); /* portuguese-brazil */ setlocale(LC_ALL, "portuguese-brazil"); time (<ime); thetime = gmtime(<ime); /* %#x is the long date representation, appropriate to * the current locale */ if (!strftime((char *)str, 100, "%#x", (const struct tm *)thetime)) printf("strftime failed!\n"); else printf("No Brasil locale, strftime retorna '%s'\n", str); /* Set the locale back to the default environment */ setlocale(LC_ALL, "C"); time (<ime); thetime = gmtime(<ime); if (!strftime((char *)str, 100, "%#x", (const struct tm *)thetime)) printf("strftime failed!\n"); else printf("In 'C' locale, strftime returns '%s'\n", str); }
-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/