Строка "Pa"
составляет всего 2 байта (3, если вы считаете нулевой терминатор), но вы хотите записать 32 байта в ваш файл. Таким образом, вам нужно дополнить строку 30 пробелами. Есть много разных способов справиться с этим:
char units[32] = "Pa";
memset(units+2, ' ', 30);
fwrite (units, 1, 32, myFile);
std::string units = "Pa";
std::string padding(32-units.size(), ' ');
fwrite (units.c_str(), 1, units.size(), myFile);
fwrite (padding.c_str(), 1, padding.size(), myFile);
std::string units = "Pa";
std::ostringstream oss;
oss << std::setw(32) << std::setfill(' ') << std::left << units;
std::string s = oss.str();
fwrite (s.c_str(), 1, s.size(), myFile);
При этом, поскольку вы используете C ++, вы должны использовать файловый ввод / вывод в стиле C ++ вместо файла в стиле CВвод / вывод, например:
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int main() {
ofstream myFile ("input_file.dat", ios::binary);
string units = "Pa";
myFile << setw(32) << setfill(' ') << left << units;
return 0;
}