Я хотел бы сохранить результат чтения в широкой строке, используя swscanf , в узкую строку, но я хотел бы читать все ввод до символа новой строки. У меня есть следующий простой пример кода, чтобы продемонстрировать, что я имею в виду:
#include <stdio.h>
int main()
{
const wchar_t* source_string = L"Hello world\n";
char new_string[100];
swscanf(source_string, L"%h[^\n]", new_string);
wprintf(L"%hs", new_string);
return 0;
}
Это отлично работает с g cc, но выводит мусор с MSV C с предупреждением:
warning C4475: 'swscanf' : length modifier 'h' cannot be used with type field character ']' in format specifier
Обратите внимание, что wprintf , приведенное выше, предназначено только для проверки и просмотра результатов.
Есть ли способ обойти это? Это просто MSV C не соответствует действующим стандартам ANSI C printf / scanf?