Expertos en programación en lenguaje C, por favor vengan.
Mira esta oración:
fwrite(amp; arr, sizeof(int), 1, fp;
sizeof(int) significa lo que escribiste; El tamaño de una pieza, estás usando un tamaño int.
1 representa el número de bloques que quieres escribir.
Obviamente, en su máquina, un int tiene 4 bytes, y el tipo de arr es char *, y un char tiene 1 byte, por lo que cuando escribe datos de 4 bytes, escribirá cuatro caracteres.
Si desea escribir todos los caracteres, cambie a
fwrite(amp; arr, sizeof(char), 10, fp>;