A man clinging to his sinking boat for more than 30 hours survived to be rescued when a passing cargo ship spotted him more than 80 miles off the coast of Florida.