私の仕事は、データ ファイルを C を使用してビッグ エンディアンからリトル エンディアンに、またはその逆に変換することです。オンラインで約 3 時間、他の例を探したり、教科書を読んだりしていますが、これを開始する方法にも行き詰まっています。関数。
これまでのところ、イベントの順序は正しい (1 ~ 4) ですが、convert_and_save関数内で → を使用して char 配列を作成する必要がありますchar buffer[4];か?
誰か助けてくれませんか?何を調べるかについての手がかりを教えていただければ幸いです。
次の関数を作成する必要があります。
void convert_and_save(struct record item, FILE * output_handle, int number);
この関数内で、次の一連の手順を実行します。
次を使用して、整数を文字の配列に変換します。
int integer_to_characters(int number, char * buffer) { memcpy(buffer, &number, 4); }その配列内の文字の順序を逆にします。
次を使用して、文字の配列を整数に変換します。
int characters_to_integer(char * buffer) { int result; memcpy(&result, buffer, 4); return result; }次を使用して、変換されたレコードを出力ファイルに書き込みます。
void save_record(FILE * file_handle, struct record a) { char output_buffer[size_of_record]; integer_to_characters(a.age, &(output_buffer[0])); memcpy(&(output_buffer[4]), a.name, 12); integer_to_characters(a.department, &(output_buffer[16])); fwrite(output_buffer, sizeof(char), size_of_record, file_handle); }