There are a few misconceptions going on here. One poster said that it is up to the customer to ask about the cancellation policy.
While this is a wise course of action it is actually up to the Business to inform you...it's called informed consent. In other words they cannot keep your money without first informing you of the rules.
Second is this: The vast majority of businesses usually keep one nights fee for a cancellation made on short notice. Some ask as much as 50%. Keeping the entire amount is a bit greedy and a good reason not to do business with them again.
Having owned and operated my own hotel in a resort area I am well aware of the disastrous effects a short notice cancellation can have. I have turned away many people who wanted a room when we were fully booked, just to have a short notice cancellation or a no-show happpen. I could have given some very nice folks a room. So it's not just the Business that suffers it is also those that are being turned away from a place they want to stay and cannot because it is full.
Cancellation fees are a must for hospitality businesses. But they should be reasonable for both parties. This one strikes me as needlessly greedy.