ユーザーに 1 つのファイルを指定するオプションを提供したいと考えています (ここではground_truth_filename
)。彼がオプションを指定しない場合、デフォルトのファイル名を仮定したいと思います。
ただし、メインプログラムのように初期化しても、ground_truth_filename
がNULL
ゼロかどうかを確認できません。0
引数がユーザーによって渡された場合、その引数に割り当てground_truth_filename
ます。しかし、チェックground_truth_filename == 0
でアサートエラーが発生します。
どんな助けでも大歓迎です。
int processFile(const char *filename,
YAML::Emitter &out_yaml,
char *ground_truth_filename)
{
std::cout << "Here" << std::endl;
if (ground_truth_filename == 0)
sprintf(ground_truth_filename,"%s.yaml",filename);
std::ifstream imgstrm(filename, std::ios::binary | std::ios::in);
if (imgstrm.bad() || !imgstrm.is_open())
{
fprintf(stderr, "Failed to open file: %s\n", filename);
return FILE_ERROR;
}
// get ground truth
std::ifstream ground_truth_stream(ground_truth_filename);
if (!ground_truth_stream.is_open())
{
fprintf(stderr, "Failed to open file: %s\n", ground_truth_filename);
return FILE_ERROR;
}
}
関数の呼び出し方法は次のとおりです。おそらく、ground_truth_filename = '\0' を初期化する必要がありますか?
char *ground_truth_filename = 0;
for (int i = 1; i + 1 < argc; i += 2) {
if (!strcmp(argv[i], "--snapshot-markup")) {
ground_truth_filename = argv[i + 1];
markupFlag = true;
}
}
processFile(filename, out_yaml, ground_truth_filename)