トップページ > 過去ログ > 記事閲覧
ファイルの読み込み
名前:rs 日時: 2007/10/21 23:12

int date[20][30; FILE *fp ; // マップセーブ用ファイルを開く fp = fopen( "map.dat" , "rb" ) ; int i; int r; if ( fp = NULL ) { for ( i = 0; i < 20; i ++ ) for ( r = 0; r < 1000; r ++ ) { date[i][r] = 64; } } else { for ( i = 0; i < 20; i ++ ) for ( r = 0; r < 1000; r ++ ) { fwrite( &date[i][r] , sizeof(int) , 1 , fp ) ; } // ファイルを閉じる fclose( fp ) ;; } とすると実行すると同時にエラーが起きて 強制終了してしまいます、 どうしたらいいでしょうか?

Page: 1 |

Re: ファイルの読み込み ( No.1 )
名前:rs 日時:2007/10/21 23:13

最初の1行 int date[20][30]; です ]が抜けていました。
Re: ファイルの読み込み ( No.2 )
名前:キーチック 日時:2007/10/22 01:24

これはファイルを読み込みたいのでしょうか.書き込みたいのでしょうか. それによって回答が微妙に変わると思います. fopenのときにrbを指定していますが,これだとbinaryのread用にopenすることになります. ここで指定したファイルがなければfpはNULLになると思いますが, このときはプログラムで処理しているので多分エラーにはならなそうです. エラーになるということは,その下のところでfwriteしているためでしょう. read用にしかファイルをopenしていないので,writeは出来ないだろうと思います. あと,直接のエラーとはならないだろうとは思うのですが,変数名でdateというのはどうでしょうか. もしかしたら,Cのヘッダーファイルでグローバル変数として使用されていてもおかしくない変数名ですが... 使用されていないかもしれませんが,一応別の変数名を使う方が良いように思います.
Re: ファイルの読み込み ( No.3 )
名前:Will 日時:2007/10/22 10:25

重箱の隅をつつくようだけど if (fp = NULL) は間違いで if (fp == NULL) ですよ、ワーニング出ていませんか? あと、"date[20][30]"だったら"r < 30"じゃないとバッファオーバーランしてますね。
Re: ファイルの読み込み ( No.4 )
名前:rs 日時:2007/10/22 19:07

皆さんありがとうございます、 無事解決いたしました! ロードしたかったのにfwriteになってましたね・・ ほかにも間抜けなミスばっか・・・

Page: 1 |