質問です。Windows XPでVisual C++(言語はC)からUNIX(Solaris)のgccに移植してます。で

if((file_ptr = fopen("C:hoge.txt","w+")) == NULL)
{
printf("Can't open the hoge file.");
exit(0);
}

fwrite(hoge_array, sizeof(hoge_array), index, file_ptr); //←ここでセグメンテーション違反を食らいました
close(file_ptr);

Visual C++では何も問題もなく動くのにgccでは動かないんです。
ポインタがなんか変なところを指してるとしたら
Visual C++でも同じエラーが出てもいいはずじゃないですか?
何が問題なんでしょう?ここの関数はそんなに長くないんで晒してもいいんですけど。

UNIXではfopenのときにO_WRONLYとかO_RDONLYとか使わないとダメ、とかそんな奴ですか?