0
ログファイルに何かを書き込むプログラムがあるとします。ファイル名にタイムスタンプを追加するまでは、すべてうまくいきました。printfとstrftimeで無効な引数エラーが発生する
は、ここで私はこれを行う方法は次のとおりです。
time_t rawtime;
struct tm * timeinfo;
char buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, sizeof(buffer), "%d-%m-%Y_%I:%M:%S_", timeinfo);
std::string timestring(buffer);
std::string filename = timestring + ".txt";
std::cout << "\n" << filename << std::endl;
FILE *f = fopen(filename.c_str(), "w");
私はなぜ知っているが、fopen
戻りNULL
ません。
filename
は、20-08-2017_01:08:09.txt
ですが、ファイル名をlogfile.txt
に変更すると、eveythingは正常に動作します。
ファイル名に一部の文字が含まれていないかのようですが、-
、_
、:
でテストしましたが、そうではありません。
誰にもアイデアはありますか?
どのオペレーティングシステムであるかもしれませんか? Windowsの場合、 ':'は許可されていないようです。正しくテストしたことはありますか? – HolyBlackCat
Win 8.1、VS2015、インテル®コンパイラー17.0。 – user3051029
手で同じファイルを作成できますか? – Mike