only call scanf on non-null parameter