I can't quite get this figured out.
sscanf (StringName, "%*[^0-9]%d::%d::%*d::INSTR", &1stVar, &2ndVar);
This writes into Stringname "VarA::VarB::VarC" where
1stVar is copied to VarA stripped of anything numeric.
If anything is left over it's written to VarB.
2ndVar is written to VarC.
Looks like one argument is missing but I don't know what %*d does.