Айхрень...
306 / 176 / 7
Регистрация: 02.06.2009
Сообщений: 1,077
1

sprintf() и wchar_t

09.04.2010, 08:50. Показов 9894. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется структура с параметрами wchar_t *, её параметры необходимо пропустить через sprintf. Вроде как уже выяснил, что функция может принимать в качестве аргументов юникод-строки, выглядит это всё следующим образом:

C++
1
2
3
4
5
6
7
char *formatstr = "%S\t%S\t%S";
char *res = (char *)malloc(1024);
 
sprintf_s(res, 1024, formatstr,
    dc->first,
    dc->second,
    dc->third);
в итоге функция возвращает -1, программа не вылетает, ошибок и исключений не генерирует.

если строку formatstr изменить на "%s\t%s\t%s", т.е. сделать маленькие s, то в результате выводятся только первая буква из полей структуры.

Как написано в доках, %s - если юзается в printf-подобных функциях, то означает char*, если %S юзается в printf, то означает wchar_t*, если в функциях wprintf - то наоборот...

Что-то я недопонял причины неработы...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2010, 08:50
Ответы с готовыми решениями:

'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead
ошибка: Error 1 error C4996: 'sprintf': This function or variable may be unsafe. Consider using...

Вызов sprintf для типа не соответствующего формату
Какова реакция sprintf на передачу в нее значения с типом не соответствующим указанному в формате...

Преобразование wchar_t в int
Уважаемые коллеги. Подскажите пожалуйста, как преобразовать wchar_t в int и double. Исходно имеется...

wchar_t/char ->int
Привет всем! Вот у меня есть символ в переменной типа wchar_t='1', как можно 'перевести' в int?...

2
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
09.04.2010, 09:46 2
Возможно символы кривые есть - как в этом примере !

http://msdn.microsoft.com/en-u... 71%29.aspx
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// crt_swprintf.c
// wide character example
// also demonstrates swprintf returning error code
#include <stdio.h>
 
int main( void )
{
   wchar_t buf[100];
   int len = swprintf( buf, L"%s", L"Hello world" );
   printf( "wrote %d characters\n", len );
   len = swprintf( buf, L"%s", L"Hello\xffff world" );
   // swprintf fails because string contains WEOF (\xffff)
   printf( "wrote %d characters\n", len );
}
1
Айхрень...
306 / 176 / 7
Регистрация: 02.06.2009
Сообщений: 1,077
09.04.2010, 12:24  [ТС] 3
Проблема, оказывается, была исключительно в кодировке русской, которую не переваривала программа и функции наподобие таких, как wcstombs_s, поставил setlocale(LC_ALL, "Russian"); и всё встало на сови места!

Интеренсо, можно ли как-то разобраться без этого setlocale? буду думать..

В этой фразе, значит, есть что-то важное )
If wcstombs encounters a wide character it cannot convert to a multibyte character, it returns –1 cast to type size_t and sets errno to EILSEQ
0
09.04.2010, 12:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2010, 12:24
Помогаю со студенческими работами здесь

Перевод wchar_t to URL
У меня есть строка - &quot;qwe ПРИВЕТ&quot; конвертировать в URL: &quot;qwe&quot; - остаётся без изменений. &quot; &quot; -...

преобразовать wchar_t [255] в const TCHAR []
столкнулся с проблемой разных типов строк... wchar_t path_msk; ...

Невозможно преобразовать параметр 1 из 'const char [3]' в 'const wchar_t *
void CprojectDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: добавьте...

Wchar_t и запись в файл
Здравствуйте. Выполняю запрос в SQLite, с помощью sqlite3_column_text16 получаю данные в wchar_t,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru