[過去ログ]
DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net (1002レス)
DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
213: 名前は開発中のものです。 [sage] 2017/04/15(土) 13:07:47.39 ID:poy2AG7G 何故だろう、急に挙動が変わった。 sizeが0を返すからファイルが見付からない訳じゃないと思うのだけど。 void* readbin( char *filename) { int size ,rsize ,h; char *ptr; if ( size = FileRead_size( filename ) == -1 ) errmsg( NOTREAD ,filename ); ptr = (char*)malloc(size+1); if ( h = FileRead_open( filename ) == 0 ) errmsg( NOTOPEN ,filename ); rsize=FileRead_read(ptr ,size ,h); printfDx( "%s : %d/%d\n" ,filename ,size ,rsize ); FileRead_close( h); return ptr; } http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/213
215: 名前は開発中のものです。 [sage] 2017/04/15(土) 14:44:24.56 ID:qT8WsIhy DXLib 知らずに覗いてるだけでどう挙動が変わったかわからんので >>213 の疑問には答えられないが、 >>214 おそらくファイルのく中身は表示などに使う文字列だという前提だと、 文字列の終端は NULL で止める必要があるのでその 1byte 分を余計に確保している。 (今どきのコンパイラは malloc での確保と同時に \0 埋めをしてくれるのかもしれないけどちょっと危ないな。) readbin() という名前からして文字列と言っても中身はバイト列と推測できるので、 ファイルの中身には終端 NULL を入れずに記録しているんだろう。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/215
216: 213 [sage] 2017/04/15(土) 15:14:07.66 ID:YQ+vHcvV +1は苦し紛れにあーだこーだいじる過程でダメ元で付加してみたのでした。 末端に不定の1バイトが付加されるので無駄な容量食いではありますが、危険という認識はありませんでした。 早急に削除します。 そして、自己解決しました。if文の連結順序を誤解していました。何故今まで動いていたんだ・・・。 if ( size = FileRead_size( filename ) == -1 ) errmsg( NOTREAD ,filename ); if ( h = FileRead_open( filename ) == 0 ) errmsg( NOTOPEN ,filename ); ↑これは↓こうですね。 if ( (size = FileRead_size( filename )) == -1 ) errmsg( NOTREAD ,filename ); if ( (h = FileRead_open( filename )) == 0 ) errmsg( NOTOPEN ,filename ); お騒がせしました。 http://mevius.5ch.net/test/read.cgi/gamedev/1452005069/216
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.030s