作者: 木村浩一
日時: 2008/12/23(10:55)
Bruce. です。

#誰か386BSD以降のUNIXの歴史を纏めているものがあったら教えてください。
#特に、FreeBSDとNetBSDの分裂?の経緯について

閑話休題。

davi さんは書きました:

> 以下の部分が問題のようです。
> 
> POS read_txt(unsigned short  *buf, char* file)
> {
> 	FILE *fp;
> 	int c, c2;
> 	POS count;
> 
> 	File_Name = file;
> 	Line_No = 1;
> 
> 	fp = fopen(file, "rb");
> 	if (fp == NULL)
> 		error(ERR_READ);
> 
> 	for hogehoge {
> 	式は省略
> 	}
> 	fclose(fp);
> 
> 	File_Name = NULL;
> 
> 	return count;
> }
> 
> こんな感じなんですが、
> 
> fp = fopen(file, "rb");
> 
> の所で
> 
> warning C4996: 'fopen': This function or variable may be unsafe.
> Consider using fopen_s instead.
> To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
> See online help for details.
> 
> というエラーが出ます。

いや“warning”ですし、これはとりあえずは放置しても害はないはずです。


> そこで、コードの1行目(色んな#include宣言よりももっと前)に
> 
> #define _CRT_SECURE_NO_WARNINGS
> 
> と記述したのですが、それでもコードのずっと前の所の
> 
> char ERR_READ[] =
> 
> で宣言している「A 1 行目: ファイルが見つかりません.」という
> エラーが出て、動かないようです。
> "rb"を"r"にしてもダメでした。
> 
> なお、ファイル名はコマンドラインから2つ与える作りのようです。

このエラーはビルドの結果できた実行ファイルを実行したときのエラーですよね?
fopenに渡されてきているパラメーターの問題ではないでしょうか。

あー、あれだ、プロジェクトがUNICODEビルドになってませんか?
確か2003→2005でデフォルトビルドの文字コードの扱いが変わっているはずです。


-- 
木村浩一/KIMURA Koichi
 I thought what I'd do was, I'd pretend I was one of those deaf-mutes or
shoud I?
 mail kbk at kt.rim.or.jp
 web  www.kt.rim.or.jp/~kbk/zakkicho/index.html