С учетом следующего фрагмента:
#include <iostream>
#include <cstring>
#include <cstdio>
int main()
{
char color[256];
float c,m,y,k;
const char* arguments = "0.8500 1 0 0 (Violet)";
memset(color, 0, 256 * sizeof(char));
if (sscanf(arguments, "%f %f %f %f %256c", &c, &m, &y, &k, color) == 5)
std::cout << color;
}
это было в производстве и работало в течение по крайней мере 10 - 15 лет (выводит название цвета):
(фиолетовый)
, но с использованием новейшего компилятора Microsoft Visual Studio или MSVC ++ 15 результат изменился. Вместо 5 результат равен 4. При использовании gcc или clang результат также равен 5, как это было в предыдущих версиях MSVC ++. Что-то не так в этом коде или кто-то знает, почему эти разные результаты между компиляторами?