The dd function you posted would actually copy three times a junk of 1024 bytes, ie. 3K bytes in total.
But I understand your question in such a way that you want to read 3 bytes in at once and do that same 300 times, right?
memcpy() is not the right function when you want to store it into a file. You simply need to store 3 bytes in a buffer of char buf[3]; and then use fwrite to write this buffer into a file. Wrap a loop around it so it gets done until 1024bytes are written and you're done