swprintf (Linux) - неправильная работа
Добрый день
Не могу добиться правильной работы swprintf под Linux Код:
#include <stdio.h> 1. Case 2. Вместо Test_string_2 в файле оказывается записан шаблон Test_%S_2 2. Case 1+2. После строки в файле оказывается "мусор" (под Windows идут аккуратные 0х00, как задумывалось) В чем моя ошибка? Спасибо PS. Компиляторы: Linux GCC 4.4.7 (3.x.x тоже испытывался), опции -Wall -fshort-wchar -O2 -m32 -s -U__STRICT_ANSI__ Windows MinGW |
Дополнительно про Linux (если имеет значение)
RHEL 6.5 i686 |
http://linux.die.net/man/3/swprintf
вроде всё сходится с описанием: нужно %ls, а не %S |
Цитата:
|
кажется понял:
%S (хотя я такого в мануале не нашёл) и %ls ожидает wchar_t* а чтобы выводить char*, нужен %s По крайней мере %s отработал (по моему мнению) правильно. Жаль, что -Wformat ничего на неправильный код не выдал. |
Цитата:
У меня (GCC, как я уже говорил) он тоже работает неправильно |
пробовал так:
Код:
#include <stdio.h> Код:
[andrey@localhost 1]$ gcc test.c |
Цитата pva:
пробовал так: » Если Вам не трудно, попробуйте, пожалуйста, мой исходник (я специально его привел - там не статический массив char) Цитата pva: Возможно вам следует обновиться из репозитория? » К сожалению, Linux не является моим штатным рабочим инструментом (установлен в VirtualBox), знаю его плохо: в интернет ходит, обновлять что-либо - не хочет |
У меня получается так (wchar_t 2-х байтный)
Код:
[asap@RHEL65x32 Test]$ cat testfile.txt | hexdump -c |
RedScorpio, делаю так:
1. Копиру код, заменяю %S на %s Цитата:
Код:
[andrey@localhost 1]$ hexdump -c <testfile.txt |
Вот оно что! во всём виноват
Код:
-fshort-wchar |
Цитата pva:
wxhar_t то стал короче, в реализация wsprintf короче не стала. Нужно слинковать с соответвтующей функцией glibc, но я такой не нашёл (для 16-битного wchar_t) » Да, действительно, это и есть root cause. Но мне-то нужен 16-битный wchar_t... Похоже, что придется делать "костыли", а не хотелось бы... |
Время: 17:44. |
Время: 17:44.
© OSzone.net 2001-