Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/190: Рейтинг темы: голосов - 190, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 3
1

Segmentation fault (core dumped)

23.01.2017, 20:30. Показов 35025. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток. Не могли бы посмотреть кусок программы и подсказать ошибку. При компиляции ничего не выдаёт, а вот при запуске пишет Segmentation fault (core dumped). Спасибо всем.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void fir(char ifile[], char ofile[], char ffile[])
{
 FILE *fk, *fin, *fout;
 float koef[20], in[300], out[300], max = 0;
 int i, j;
 fk = fopen(ffile, "r");
 fin = fopen(ifile, "r");
 fout = fopen(ofile, "w");
 for (i=0; i<300; i++) fscanf(fin, "%f", &in[i]);
 for (i=0; i<20; i++) fscanf(fk, "%f", &koef[i]);
 for (i=0; i<300; i++){
  out[i] = 0;
  for(j=0; j<20; j++)
   if (i-j>=0) out[i]+=koef[j]*in[i-j];
  max = fmax(fabs(out[i]) , max);
 }
 for (i=0; i<300; i++){
  out[i] = out[i]/max;
  fprintf(fout, "%f", out[i]);
 }
 graph(ifile, "GraphInput.txt");
 graph(ofile, "GraphOutput.txt");
 fclose(fk);
 fclose(fin);
 fclose(fout);
 return;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2017, 20:30
Ответы с готовыми решениями:

Segmentation fault (core dumped) в strcat
Сделал программу, в с новичок, но при вызове strcat выдоет ошибку: &quot;Segmentation fault (core...

Расчитать факториал. Segmentation fault (core dumped). 139
При запуске след кода: #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main (void) { int n; int k =...

Segmentation fault (core dumped): ошибка при любом вводе после компиляции
Всем доброго времени суток. Не могли бы посмотреть программу и подсказать ошибку. При компиляции...

Вывести треугольник Паскаля, используя динамический массив. Ошибка "Segmentation fault (core dumped)"
Задача такова: вывести треугольник паскаля используя динамический массив. Я написала, но выдает...

7
294 / 123 / 106
Регистрация: 30.10.2015
Сообщений: 690
23.01.2017, 20:38 2
Эта ошибка означает, что вы вышли за границы массива.
Скорее все, где-то здесь:
C++
1
2
3
4
5
6
7
8
9
for (i=0; i<300; i++) // предположим, i = 0
{
  out[i] = 0;
 
  for(j=0; j<20; j++) // предположим, j = 5
   if (i-j>=0) out[i]+=koef[j]*in[i-j]; // пытаемся обратиться к индексу с номером i - j, то есть к -5
 
  max = fmax(fabs(out[i]) , max);
 }
Думаю меня поправят, если что
0
446 / 315 / 99
Регистрация: 02.10.2008
Сообщений: 1,198
Записей в блоге: 1
23.01.2017, 20:41 3
Цитата Сообщение от Nemovok Посмотреть сообщение
C
1
if (i-j>=0)
Попробуйте i-j взять в скобки (не помню приоритеты):
C
1
if ((i-j)>=0)
Так же прога может вылетать в содержимом graph().
0
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 3
23.01.2017, 20:44  [ТС] 4
Цитата Сообщение от Nemovok Посмотреть сообщение
if (i-j>=0) out[i]+=koef[j]*in[i-j];
На этот случай есть условие, так что не знаю где там ещё может быть.
0
294 / 123 / 106
Регистрация: 30.10.2015
Сообщений: 690
23.01.2017, 20:50 5
Цитата Сообщение от Nemovok Посмотреть сообщение
if (i-j>=0)
Не заметил
0
0 / 0 / 0
Регистрация: 23.01.2017
Сообщений: 3
23.01.2017, 20:51  [ТС] 6
Тут вылетает именно в этой функции. Все проверил уже раз на сто). Не знаю почему, но если её запущу отдельно (как другая программа), то всё нормально. Вот и пытаюсь решить в чём проблема.
0
446 / 315 / 99
Регистрация: 02.10.2008
Сообщений: 1,198
Записей в блоге: 1
23.01.2017, 20:59 7
Цитата Сообщение от Сергей2109 Посмотреть сообщение
Тут вылетает именно в этой функции.
C - язык весёлый. Если есть косяк (выход за пределы диапазона/выделенной памяти), то вылезти может где угодно. Я помниться в сотне килобайт исходников две недели ковырялся, в поисках бага - оказалось повторное освобождение памяти в очереди сообщений, а вылазило редко, не всегда и в самых неожиданных местах.
0
С чаем беда...
Эксперт CЭксперт С++
8744 / 4405 / 1204
Регистрация: 18.10.2014
Сообщений: 9,664
23.01.2017, 22:12 8
Цитата Сообщение от Сергей2109 Посмотреть сообщение
При компиляции ничего не выдаёт, а вот при запуске пишет Segmentation fault (core dumped).
Где информация о том, в каком именно месте кода это происходит? Почему она не приведена в вашем первом сообщении?

Существует миллион причин, по которым может произойти эта ошибка, и в вашем коде есть предпосылки для множества из этих причин. Каким образом вы предполагаете нам угадать, что вы передаете в эту функцию, существуют файлы, которые вы пытаетесь открывать, и что происходит в загадочной функции graph???
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2017, 22:12

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Segmentation fault
а) qsort(v, left, last-1, comp); б) qsort(v, left, last--, comp); Ребята чем отличается функция...

Segmentation fault в релизе
Здравствуйте! Изучаю сейчас C. При компиляции в релизе возникает ошибка в такой, казалось бы,...

Pcap_close(): Segmentation fault
pcap_close выдает segmentation fault, но самое интересное, что при попытке сделать вывод в stdout...

Массив: Segmentation fault
Задача: Мама отправила Васю в магазин за попплерами. В магазине имеются только купюры номинала A и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.