For the ones who have to use an older standard than C++11 you can implement your own vfscanf function like the following:
 int vfscanf(FILE* file, const char *format, va_list argPtr)
{
    size_t count = 0;
    const char* p = format;
    while(1)
    {
        char c = *(p++);
        if (c == 0) 
            break;
        if (c == '%' && (p[0] != '*' && p[0] != '%')) 
            ++count;
    }
    if (count <= 0)
        return 0;
    int result;
    _asm
    {
        mov esi, esp;
    }
    for (int i = count - 1; i >= 0; --i)
    {
        _asm
        {
            mov eax, dword ptr[i];
            mov ecx, dword ptr [argPtr];
            mov edx, dword ptr [ecx+eax*4];
            push edx;
        }
    }
    int stackAdvance = (2 + count) * 4;
    _asm
    {
        mov eax, dword ptr [format];
        push eax;
        mov eax, dword ptr [file];
        push eax;
        call dword ptr [fscanf];
        mov result, eax;
        mov eax, dword ptr[stackAdvance];
        add esp, eax;
    }
    return result;
}
For further information.