You're code is not quite clear to me, but you may check what you've already done of these steps

Approach #1:
------------

<!-- language: lang-none -->

    for each scanline in the original BMP
    {
        get the location of the file position indicator

        repeat n times // resize vertically
        {
            if we're not at the beginning of the current scanline
            {
                set the file position indicator back at the beginning of the scanline
            }
    
            for each RGBTRIPLE in this scanline
            {
                read an RGBTRIPLE
                write that RGBTRIPLE n times // resize horizontally
            }
    
            write the new padding to the new BMP
        }
    
        skip the old padding
    }

Approach #2:
------------

<!-- language: lang-none -->

    for each scanline in the original BMP
    {
        create an RGBTRIPLEs array named triples of size (original width * 2)
        
        for each RGBTRIPLE in the current scanline
        {
            read an RGBTRIPLE
            
            repeat n times // resize horizontally
            {
                store the RGBTRIPLE into the current index of triples
            }
        }

        // resize resize vertically
        repeat n times
        {
            write the whole array into the new BMP
            write the new padding
        }      
        
        skip the old padding
    }

Hope that helps!