Ошибка в инициализации локальной переменной
Ошибка: error C4700: использована неинициализированная локальная переменная "in". Как устранить ошибку?
void write_inverse_list(LIST* head)
{
FILE* in;
LIST* p;
fclose(in);
in = fopen("C:\\Users\\Admin\\Desktop\\in.txt", "w");
if (head)
{
while (head->next)
{
p = head;
fprintf(in, "%s ", p->word);
head = p->next;
delete p->word;
delete p;
}
fprintf(in, "%s", head->word);
delete head->word;
delete head;
head = NULL;
}
else
{
fclose(in);
in = fopen("C:\\Users\\Admin\\Desktop\\in.txt", "w");
}
fclose(in);
}
int main()
{
LIST* head = NULL;
head = read_list(head);
head = osnova(head);
write_inverse_list(head);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
FILE* in;
LIST* p;
fclose(in);
Скажите, зачем вы закрываете то, чего не открывали? Вот здесь и есть источник проблемы - вы закрываете нечто, что никакого отношения к какому-то файлу не имеет - in не имеет никакого значения.
Для того, чтобы устранить эту конкретную ошибку - достаточно удалить строку fclose(in);.
Еще - все же желательно проверять, что файл открылся, т.е. значение in после fopen.
И совершенно непонятны вот эти телодвижения -
else
{
fclose(in);
in = fopen("C:\\Users\\Admin\\Desktop\\in.txt", "w");
}
fclose(in);
Зачем? Какой в этом смысл?...