2017-08-19 20 views
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は正常に動作します。

ファイル名に一部の文字が含まれていないかのようですが、-_:でテストしましたが、そうではありません。

誰にもアイデアはありますか?

+4

どのオペレーティングシステムであるかもしれませんか? Windowsの場合、 ':'は許可されていないようです。正しくテストしたことはありますか? – HolyBlackCat

+0

Win 8.1、VS2015、インテル®コンパイラー17.0。 – user3051029

+1

手で同じファイルを作成できますか? – Mike

答えて

1

エスケープしてみてください。文字を、それが問題

関連する問題