LINUX.ORG.RU

swscanf не находит строку


0

1
    wchar_t buf[] = L"12|01234|это я|текст";
    int     nn = 0;
    long    nu = 0;
    wchar_t ftip[50];
    swscanf( buf, L"%u|%lu|%50[^|]||", &nn, &nu, ftip ); // ftip != "это я" WTF?

почему не работает %50[^|]|? переменная ftip пуста



Последнее исправление: sadavod (всего исправлений: 2)
Ответ на: комментарий от dimon555

Если не сложно объясните почему не работает вынос ширины за формат

swscanf( buf, L"%u|%lu|%*l[^|]||", &nn, &nu, 50, ftip );

я понимаю можно формат за ранее составить, но просто интересно, в scanf такая конструкция работала.

sadavod
() автор топика
Ответ на: комментарий от sadavod

в man scanf от бубунты написано, что * это assignment-suppression character, значит, что эти символы парсятся но никуда не сохраняются.

так что не знаю, как это работает в твоём примере, могу предположить, что строка инициализирована мусором и выводит что-то.

в том же мане упоминается gnu extension 'a', попробуй его использовать.

dimon555 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.