• 締切済み

GCC pack-structパラメータ

構造体にファイルからデータを直接、読みこませたい時、pack-structパラメータを付けてコンパイルしますが、その時、stat関数を使用しているとstat構造体のデータがずれてうまく動作しません。pack-structパラメータを使用してコンパイルしてもstatが正常に動作する方法があれば教えて下さい。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

#1 の補足を読む限りでは, ファイルに出力するときとファイルから読み込むときで pack が同じであればいいような気がします. pack しなくても (ゴミが書き出される/読み込まれるかもしれないだけで) 問題ないと思うのですが.

noname#30727
noname#30727
回答No.2

#pragma pack(1) #pragma pack() で構造体を挟む

回答No.1

状況がいまいち分かりませんが、ファイルにstat構造体の内容を書き込んでおいて、それをファイルから読み込もうとしているのでしょうか。 pack-structは必要ないように思いますが。 それにstat関数はpack-struct付きでコンパイルされてないですよね?

Yoshi7112
質問者

補足

まさに、stat関数がpack-structでコンパイルされていない事が問題なのですが。以下のようなプログラムの時、皆さんはどの様にされていますか。 typedef struct { char a; int b; char c[10]; int d; } _Sanple; _Sanple SD; int main(int argc, char **argv) { int fp; if ((fp = open("sanple.dat", O_RDONLY)) == -1) exit(1); read(fp, (char *)&SD, sizeof(_Sanple)); printf("%c %d\n", SD.a, SD.b); このプログラムが期待どうりに動作させようと思えばpack-structパラメータを付けてコンパイルしないといけないと思いますが、stat関数を使用しているとpack-structパラメータが使えません。色々とためしてみましたが中々うまくかないなで、なにか良い方法があればと 質問しました。

関連するQ&A