Неправильная работа getwc

Модератор: Модераторы разделов

Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Неправильная работа getwc

Сообщение ZyX »

Код: Выделить всё

(zyx:a.a/Proj/translit2) % cat test.sh
#!/bin/sh
echo "«»" >test.txt
./test
echo "--------------"
echo "ttt«»uuu" >test.txt
./test

(zyx:a.a/Proj/translit2) % cat test.c
#include <wchar.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
    FILE *f=fopen("test.txt", "r");
    printf("%li\n", ftell(f));
    fwide(f, 1);
    printf("%li\n", ftell(f));
    wint_t cur=0;
    while((cur=getwc(f))!=WEOF)
        printf("%lc: %li\n", cur, ftell(f));
    return (0);
}

(zyx:a.a/Proj/translit2) % gcc -o test test.c
(zyx:a.a/Proj/translit2) % ./test.sh
0
0
--------------
0
0
t: 9
t: 10
t: 11

В чём дело?

Код:

(zyx:a.a/Proj/translit2) % gcc --version gcc (GCC) 4.1.2 20070214 ( (gdc 0.24, using dmd 1.020)) (Gentoo 4.1.2 p1.3) Copyright © 2006 Free Software Foundation, Inc. Это свободно распространяемое программное обеспечение. Условия копирования приведены в исходных текстах. Без гарантии каких-либо качеств, включая коммерческую ценность и применимость для каких-либо целей. (zyx:a.a/Proj/translit2) % equery uses glibc [ Searching for packages matching glibc... ] [ Colour Code : set unset ] [ Legend : Left column (U) - USE flags from make.conf ] [ : Right column (I) - USE flags packages was installed with ] [ Found these USE variables for sys-libs/glibc-2.6.1 ] U I - - crosscompile_opts_headers-only : Build the toolchain against cross-headers only. - - debug : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml - - gd : Adds support for media-libs/gd (to generate graphics on the fly) - - glibc-omitfp : Configure glibc with --enable-omitfp which lets the build system determine when it is safe to use -fomit-frame-pointer - - hardened : activate default security enhancements for toolchain (gcc, glibc, binutils) - - multilib : On 64bit systems, if you want to be able to compile 32bit and 64bit binaries + + nls : Adds Native Language Support (using gettext - GNU locale utilities) - - profile : Adds support for software performance analysis (will likely vary from ebuild to ebuild) - - selinux : !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur - - vanilla : Do not add extra patches which change default behaviour; DO NOT USE THIS ON A GLOBAL SCALE as the severity of the meaning changes drastically (zyx:a.a/Proj/translit2) % emerge --info Portage 2.2_rc23 (default/linux/x86/2008.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.24-tuxonice-r9 i686) ================================================================= System uname: Linux-2.6.24-tuxonice-r9-i686-Intel-R-_Pentium-R-_4_CPU_3.06GHz-with-glibc2.0 Timestamp of tree: Fri, 27 Feb 2009 15:45:01 +0000 app-shells/bash: 3.2_p39 dev-java/java-config: 2.1.6-r1 dev-lang/python: 2.5.2-r8 dev-util/cmake: 2.6.2-r1 sys-apps/baselayout: 2.0.0 sys-apps/openrc: 0.4.3-r1 sys-apps/sandbox: 1.2.18.1-r2 sys-devel/autoconf: 2.13, 2.63 sys-devel/automake: 1.5, 1.7.9-r1, 1.9.6-r2, 1.10.2 sys-devel/binutils: 2.18-r3 sys-devel/gcc-config: 1.4.0-r4 sys-devel/libtool: 1.5.26 virtual/os-headers: 2.6.28-r1 ACCEPT_KEYWORDS="x86" ALSA_CARDS="emu10k1 via82xx" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" ANT_HOME="/usr/share/ant" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ARCH="x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -march=prescott -mtune=prescott -pipe -mmmx -msse -msse2 -msse3 -mfpmath=sse -fomit-frame-pointer" CHOST="i686-pc-linux-gnu" CLEAN_DELAY="5" COLLISION_IGNORE="/lib/modules" COLORFGBG="15;0" COLORTERM="rxvt" CONFIG_PROTECT="/etc /usr/kde/4.2/env /usr/kde/4.2/share/config /usr/kde/4.2/shutdown /usr/share/config /var/lib/hsqldb" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c /etc/udev/rules.d" CVS_RSH="ssh" CXXFLAGS="-O2 -march=prescott -mtune=prescott -pipe -mmmx -msse -msse2 -msse3 -mfpmath=sse -fomit-frame-pointer" DISPLAY=":0.0" DISTDIR="/usr/portage/distfiles" EDITOR="/usr/bin/vim" ELIBC="glibc" EMERGE_DEFAULT_OPTS="--verbose --buildpkg --keep-going" EMERGE_WARNING_DELAY="10" FEATURES="distlocks fixpackages metadata-transfer parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-orphans userfetch" FETCHCOMMAND="/usr/bin/wget -t 5 -T 60 --passive-ftp -O "${DISTDIR}/${FILE}" "${URI}"" GCC_SPECS="" GDK_USE_XFT="1" GENTOO_MIRRORS="ftp://mirror.yandex.ru/gentoo-distfiles http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo http://mirror.yandex.ru/gentoo-distfiles ftp://ftp.corbina.net/pub/Linux/gentoo ftp://ftp.gentoo.mesh-solutions.com/gentoo/ http://distfiles.gentoo.org" HG="/usr/bin/hg" HOME="/home/zyx" HUSHLOGIN="FALSE" INFODIR="/usr/GNUstep/System/Library/Documentation/info:/usr/GNUstep/Local/Library/Documentation/info" INFOPATH="/usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/info:/usr/share/gcc-data/i486-pc-linux-gnu/4.1.2/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info:/usr/GNUstep/System/Library/Documentation/info:/usr/GNUstep/Local/Library/Documentation/info" INPUT_DEVICES="keyboard mouse evdev" JAVAC="/etc/java-config-2/current-system-vm/bin/javac" JAVA_HOME="/etc/java-config-2/current-system-vm" JDK_HOME="/etc/java-config-2/current-system-vm" KERNEL="linux" LADSPA_PATH="/usr/lib/ladspa" LANG="ru_RU.UTF-8" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LDFLAGS="-Wl,-O1" LESS="-R -M --shift 5" LESSOPEN="|lesspipe.sh %s" LINGUAS="ru en_GB" LOGNAME="zyx" MAIL="/var/mail/zyx" MAKEOPTS="-j1" MANPATH="/etc/java-config-2/current-system-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/man:/usr/share/gcc-data/i486-pc-linux-gnu/4.1.2/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man:/etc/java-config/system-vm/man/:/usr/kde/4.2/share/man:/opt/opera/share/man:/usr/GNUstep/System/Library/Documentation/man:/usr/GNUstep/Local/Library/Documentation/man" NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" OLDPWD="/home/zyx" OPENGL_PROFILE="nvidia" PAGER="/usr/bin/less" PATH="/home/zyx/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.1.2:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/kde/4.2/bin:/usr/games/bin:/usr/GNUstep/System/Tools:/usr/GNUstep/Local/Tools" PKGDIR="/usr/portage/packages" PORTAGE_ARCHLIST="ppc s390 amd64 x86 ppc64 x86-fbsd m68k arm sparc sh mips ia64 alpha hppa sparc-fbsd" PORTAGE_BINHOST="http://dev.gentooexperimental.org/binpkg/i686-stable" PORTAGE_BINHOST_CHUNKSIZE="3000" PORTAGE_BIN_PATH="/usr/lib/portage/bin" PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png" PORTAGE_CONFIGROOT="/" PORTAGE_COUNTER_HASH="e774f1583244d9aa38900f8e2431b101" PORTAGE_DEBUG="0" PORTAGE_DEPCACHEDIR="/var/cache/edb/dep" PORTAGE_ELOG_CLASSES="log warn error" PORTAGE_ELOG_MAILFROM="portage@localhost" PORTAGE_ELOG_MAILSUBJECT="[portage] ebuild log for ${PACKAGE} on ${HOST}" PORTAGE_ELOG_MAILURI="root" PORTAGE_ELOG_SYSTEM="save_summary echo" PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS="5" PORTAGE_FETCH_RESUME_MIN_SIZE="350K" PORTAGE_GID="250" PORTAGE_INST_GID="0" PORTAGE_INST_UID="0" PORTAGE_PYM_PATH="/usr/lib/portage/pym" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_RSYNC_RETRIES="3" PORTAGE_TMPDIR="/var/tmp" PORTAGE_TMPFS="/dev/shm" PORTAGE_VERBOSE="1" PORTAGE_WORKDIR_MODE="0700" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" PORT_LOGDIR="/var/log/portage" PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND" PWD="/home/zyx/a.a/Proj/translit2" PYTHONDOCS="/usr/share/doc/python-docs-2.5.2/html/lib" RESUMECOMMAND="/usr/bin/wget -c -t 5 -T 60 --passive-ftp -O "${DISTDIR}/${FILE}" "${URI}"" ROOT="/" ROOTPATH="/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.1.2:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/kde/4.2/sbin:/usr/kde/4.2/bin:/usr/GNUstep/System/Tools:/usr/GNUstep/Local/Tools" RPMDIR="/usr/portage/rpm" R_HOME="/usr/lib/R" SANE_CONFIG_DIR="/etc/sane.d" SHELL="/bin/zsh" SHLVL="2" STY="14303.tty1.zyx-desktop" SYNC="rsync://mirror.yandex.ru/gentoo-portage" TERM="rxvt-unicode" USB_DEVFS_PATH="/dev/bus/usb" USE="X acl acpi alsa bash-completion berkdb branding bzip2 cli cracklib crypt cups dbus doc dri fortran gdbm gif gpm hal htmlhandbook iconv isdnlog jpeg kde kdeprefix midi mmx mudflap ncurses nls nptl nptlonly nsplugin nvidia odk ogg opengl openmp pam pcre perl png postgres pppd python qt4 readline reflection session slang sound spl sse sse2 sse3 ssl sysfs tcpd tiff truetype unicode vi vim vim-syntax x86 xorg xscreensaver zlib zsh-completion" ALSA_CARDS="emu10k1 via82xx" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="ru en_GB" USERLAND="GNU" VIDEO_CARDS="nvidia fbdev vesa vga" USER="zyx" USERLAND="GNU" USE_EXPAND="ALSA_CARDS ALSA_PCM_PLUGINS APACHE2_MODULES APACHE2_MPMS CAMERAS CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL LCD_DEVICES LINGUAS LIRC_DEVICES MISDN_CARDS NETBEANS_MODULES USERLAND VIDEO_CARDS" USE_EXPAND_HIDDEN="CROSSCOMPILE_OPTS ELIBC KERNEL USERLAND" USE_ORDER="env:pkg:conf:defaults:pkginternal:env.d" VIDEO_CARDS="nvidia fbdev vesa vga" WINDOW="0" WINDOWID="37748768" WINDOWPATH="8" XAUTHORITY="/home/zyx/.Xauthority" XDG_DATA_DIRS="/usr/share:/usr/kde/4.2/share:/usr/local/share" XDG_SESSION_COOKIE="043901fe59be47a6feeb95cc494db7ae-1235738853.598561-830441509" _="/usr/bin/emerge"
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: Неправильная работа getwc

Сообщение Folderx »

Код: Выделить всё


#include <locale.h>
#include <stddef.h>
#include <wchar.h>

/* выводит символы unicode */
main()
{
    setlocale(LC_CTYPE, "");
    wprintf(L"%lc%lc%lc\n", 0x140C, 0x1401, 0x140D);
    return 0;
}
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Неправильная работа getwc

Сообщение ZyX »

Folderx писал(а):
28.02.2009 02:48

Код: Выделить всё


#include <locale.h>
#include <stddef.h>
#include <wchar.h>

/* выводит символы unicode */
main()
{
    setlocale(LC_CTYPE, "");
    wprintf(L"%lc%lc%lc\n", 0x140C, 0x1401, 0x140D);
    return 0;
}

Спасибо, setlocale помогло.
Спасибо сказали: