Like so many things, if you know what you are trying to do, fudge is not difficult to get right.
Fudge is a high fat candy. In the US chocolate is implied but the addition of chocolate doesn't change the process.
You want a solid, creamy candy with a smooth texture.
As Elendil wrote, it is important to ensure that you cook the candy to the correct temperature- but that is only half of the problem.
As the candy cools it will form crystals. In order to have a smooth texture you have to make those crystals as small as possible. The bigger they are the grainier the candy will be. The slower the crystals form the larger they will be able to grow.
For a smooth texture we want to form crystals as quickly as possible.
Crystals require a trigger to set them off- such as a seed crystal or agitation. If the candy is allowed to cool undisturbed and with no seed sugar crystals in the pot no crystals will form. It will be like a bomb ready to go off at the slightest provocation- this is what we want. After it is cooled we stir it like mad to form all our crystals all at once- fast and small.
Fudge is very forgiving in that it is easy to start over. Unlike an egg custard that when it breaks is unrecoverable- the sugar crystals that ruin fudge are easy to fix. You just add a little water, melt the candy back down, and start over.
Tricks to prevent premature crystallization
- Prevent errant crystals!
A lid is placed on the pot for the last few minutes of cooking. This causes condensation to wash any errant sugar crystals off of the sides of the pot. A single errant crystal can ruin your fudge.
- Don't agitate the candy
When the candy is cooling it can't be stirred or bumped.
- Add distractions
I consider this cheating and it is unnecessary but some recipes reduce the risk of premature crystallization by adding things like corn syrup or marshmallow creme.
Fructose is one of the sugars in corn syrup. The problem is that 112 C is above the caramelization temperature of fructose, which is 110 C (230 F); this is uniquely low among the various common sugar molecules, most of which begin to caramelize around 160 C (320 F).
The toffee flavor that you are getting is due to the caramelization components.
However, without seeing your exact recipe it is hard to know what to change. I would suggest using table sugar with its much higher caramelization temperature instead of corn syrup would be the most appropriate solution.
It should dissolve the dairy, so you should not need to make a syrup.
However, sucrose (table sugar) has different crystallization properties than fructose and corn syrup, so after you get the main part of the candy mixture up to temperature and then cooled some, you might wish to add a tablespoon or two of corn syrup to help reduce the likelihood of graininess.
You could also try reducing the temperature to say 108 C, but this may affect the final ratio of water to sugar as less water will have been evaporated off, which would change the crystallization pattern in the confection, and thus is texture. It could end up quite sticky or even gooey.
It will probably be easier to search for a recipe for this confection that is already tuned to do what you want, as modifying candy recipes is very tricky; you must get the science and technique just right.
Note: fudge by its very nature is a a solid suspension of very tiny sugar crystals embedded in a dairy/syrup phase. The cooling and beating in traditional fudge recipes are to control the growth of the sugar crystals, so that they are numerous and very, very tiny (which gives the smooth silky texture) as opposed to larger and fewer (which gives a grainy texture).
As fructose and corn syrup tend to resist crystallization, it is odd to have a fudge like recipe with corn syrup as its main sugar component.
Best Answer
In order to save your fudge, you need to rehydrate it.
One way to do so is to place the fudge in an airtight container with some source of moisture and leave it to absorb overnight. This could be:
You could also gently heat the fudge with some moisture. This could be done: