fputc используется для записи одного ASCII-символа в файл.
int fputc(int, FILE*)
// этот int преобразуется в unsigned перед переходом в файл (ваши биты, вероятно, здесь запутались)
1- решение: откройте этот файл в двоичном режиме и запишите, используя fwrite
fp = fopen("filename", "wb+");
fwrite(buffer, 4, 1, fp);
*, поскольку целые числа на большинстве компьютеров имеют 32 бита (4 байта), это должно записать все ваши 32 бита за раз в двоичном файле
2- решение: Предполагая, что вы не можете открыть файл в двоичном режиме внутри этой функции ... вы можете просто написать 4chars usgin fprintf.
int fprintf(FILE*, format, ....);
* примечание: сложно чем-то помочь, потому что не ясно, какова природа этих символов.
например: двоичный поток, целое число, ascii, utf и т. д.