Не выводится сообщение в STDOUT
Не понимаю, почему не выводится текст при помощи puts в основной функции main, когда в другой функции encode_file указан goto?
Проблему решил, убрав goto. Однако стало интересно, почему он мешает выводу текста в консоль после функции encode_file?
static void encode_file(char *enc_data, unsigned int enc_len)
{
int fd = 0;
if((fd = open("out.dat", O_WRONLY | O_CREAT | O_EXCL, 0)) == -1) {
perror("Create encode file");
goto panic;
}
if((write(fd, enc_data, enc_len)) == -1) {
perror("Write encode file");
goto panic;
}
close(fd);
fd = 0;
panic:
close(fd);
exit(EXIT_FAILURE);
}
В main:
int main(int argc, char **argv)
{
/* Какой то код */
printf("[*] Create encrypt file...\n");
encode_file(enc_data, file_len);
puts("[*] Encrypt file success");
free(enc_data);
return 0;
}
Ответы (1 шт):
Автор решения: Solt
→ Ссылка
Потому, что goto ведёт к выходу из программы.
А что значит "Проблему решил, убрав goto."? Как заметили предыдущие комментаторы, программа заканчивается в любом случае. Может при убирании goto была поправлена ещё какая-то логика?