Я хочу дать пользователю возможность указать один файл (здесь ground_truth_filename
). Если он не укажет этот параметр, я хочу сделать предположения о имени файла по умолчанию.условия проверки на char * 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)
'if (pointer == NULL) {sprintf (указатель," foo "); } ', безусловно, неверно. – 2013-02-12 18:04:08
'if (NULL! = Ground_truth_filename && '\ 0' == * ground_truth_filename)' – SparKot
Какова логика для NULL! = Ground_truth_filename && '\ 0' == * ground_truth_filename? – vkaul11