If it's just the mempool, the user can always re-spend the output from his broadcasted transaction by deleting his own mempool (
-zapwallettxes).
(
There no general "mempool", individual nodes have its own mempool and the amount of transactions can be different)
This makes inputs from Transaction B spendable as long as the TX B was dropped from the owner's node, but Tx C will never get confirmed for being invalid.
Other nodes may keep both TX C and B in their mempool since
Bitcoin transactions have no "expiration" limit.
It will expire in 14 days by default, but some may have set a higher value [
-mempoolexpiry=8765 (
1 Year)].