First, you are nesting too many for loops in your code unnecessarily. Think about what you need to do: You want to read a two dimensional data structure, that is the bitmap of your infile. For that, you need to iterate over the height of the original image (which you did) and then over its width, so to read from top to bottom, left to right. The nested for loop with "l" is not necessary for this first step.
Second, think about not only storing an RGBTRIPLE, but an array of these, like this:
// temporary storage as array of structs
This should be stored before you enter the second for loop (considering we forget about the for loop that uses "l"). When you then enter this second for loop, iterating over the original image's width, you can temporarily store one RGBTRIPLE within that nested for loop, and read it n times into
After having stored every pixel n times (n being the user's input, btw) within this array, you can fwrite() it into the outfile, followed by the padding. This you do n times, so to ensure vertical resizing as well.
Now, to your usage of fseek(): At this stage in your code, you will have already read the BITMAPFILEHEADER and BITMAPINFOHEADER, right?! As long as your programme hasn't stopped executing, the cursor will be stored at the stage of last usage. That is, after having read those header files, you do not need to set your cursor 54 bytes further up, because it is already 54 bytes in your infile (and outfile, because you used fwrite() to write the modified headers). Generally speaking, you ONLY need fseek() to jump over the padding, that's it. Your cursor will be updated automatically.
One more thing: What do you want to do with (int)&triple? Casting the address of your RGBTRIPLE to an int? Better forget about this structure altogether.
To sum up, try to use an array of RGBTRIPLES directly after your first for loop that iterates over the infile's height. Don't use more for loops than you actually need to. And only use the fseek() function when you want the cursor to skip over the padding.