みなさん < こん??は でび です
Visual Studio2003のコマンドライン用のcpp(だけ)を拾ってきて、
Visual Studio2005で新規プロジェクトを作成し、2005の方でデフォルトで
できたcppを2003の方のcppで上書きしてから、新しい書き方になったために
出てくるらしいエラーを一個ずつ潰して行っている所なのですが、
あと一個だけ、エラーが潰せません。
# よくわからんままやっていますが、int _tmainの書き方とかが
# 全く変わっていたり、宣言で暗黙の型を当てはめてくれないらしくて、
# 「あぁ、厳密化の方向性なのね」と大雑把にMSの方針は理解できた
# ような気がするのですが、そもそも全く知らん言語なので、
# かなり困惑しています。
# ちなみにPerlCGIに書き換えたら、メモリ不足で落ちました。
# 仕方なしにC、というわけです。
で、その「あと一個」が、ファイルのハンドリングという実に初歩的
そうな所なんですね。こんな質問、あんまりカッコワルイので、
自分なりに結構調べたんですが、どうも解決作が見つかりません。
ということで、どなたか、お助け下さい。
mingw使えとか言われると、またぞろパスの書き換えが必要で面倒なので、
できれば、Visual Studio2005を前提にお願いできたら、と存じます。
以下の部分が問題のようです。
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.
というエラーが出ます。
そこで、コードの1行目(色んな#include宣言よりももっと前)に
#define _CRT_SECURE_NO_WARNINGS
と記述したのですが、それでもコードのずっと前の所の
char ERR_READ[] =
で宣言している「A 1 行目: ファイルが見つかりません.」という
エラーが出て、動かないようです。
"rb"を"r"にしてもダメでした。
なお、ファイル名はコマンドラインから2つ与える作りのようです。
でび http://davi.txt-nifty.com/1984/