2016-02-15 2 views
0

Такое поведение кажется, изменилось между Visual Studio 2012 и 2015Не понимаю sscanf_s поведение на

int i,j; 

sscanf_s("1†3", "%d†%d", &i, &j); 

В приведенном выше коде J не быть установлен. Я думаю, что это возможно потому, что † не является символом ASCII. Вышеупомянутое устанавливает j, если † заменено пространством. Тем не менее, код работал отлично в Visual Studio 2012.

Любые идеи, что здесь происходит?

Edit:

Я работал вокруг этого с помощью swscanf_s вместо этого. Я полагаю, что это было случайностью, что вышеописанное работало в Visual Studio 2012.

+3

кодировка файла? какова последовательность байтов? –

+1

Вы проверили систему поиска ошибок поставщика или сообщили о проблеме там? Регрессия между двумя версиями, несомненно, стоит биг-билета. –

ответ

1

Это ошибка: синтаксический анализатор строки с узким символом scanf имеет проблемы с сопоставлением буквенных символов с отрицательными значениями. В Microsoft Connect есть активная ошибка: Problems with sscanf. Это будет исправлено в следующем обновлении Universal CRT, используемом Visual Studio 2015 и Windows 10.

Смежные вопросы