У меня есть часть кода, которая получает номер от пользователя, а затем выделяет целочисленный массив заданного размера. Однако это приводит к ошибкам в количестве 5 000 000. Вот оно:Случайная ошибка сегментации от printf(), может кто-нибудь объяснить?
#define LINELEN 32
int main(int argc, char *argv[])
{
int n;
char buffer[LINELEN];
fprintf (stderr, "n? ");
fgets (buffer, LINELEN, stdin);
n = atoi(buffer);
int vector [n];
printf("hi\n");
}
вывожу, что Printf вызывает ошибку сегм, потому что этот код работает отлично для огромного числа:
int main(int argc, char *argv[])
{
int n;
char buffer[LINELEN];
fprintf (stderr, "n? ");
fgets (buffer, LINELEN, stdin);
n = atoi(buffer);
int vector [n];
}
Может кто-то пожалуйста, помогите мне? Спасибо
редактировать: LINELEN и ошибочный аргумент PRINTF
также, я думаю, что это что-то делать со значением переполненной стека. Может просто потребоваться динамическое распределение при этих размерах
делить значение 'LINELEN' – MOHAMED
Почему у вас есть 0 в качестве аргумента? Вы можете просто напечатать строку самостоятельно. В противном случае он должен быть частью вашей форматированной строки. 'Е ("привет \ п"); printf («hi \ n% d», 0); «Я сомневаюсь, что это причина сбоя seg. –
@remyabel, я думаю, нет проблем с 'printf (" hi \ n ", 0);'. Если указан какой-либо указанный формат, это приведет к сбою seg. – Jeyaram