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

Ошибка сегментации

10.12.2016, 23:45. Просмотров 346. Ответов 5
Метки нет (Все метки)

Задача: В двух файлах дано 2 массива. Вывести эти 2 массива в третий файл в отсортированном виде. После ввода названий файлов выдает ошибку сегментации. В чем может быть проблема?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void Sort(double *num, int size) {
  int i, j, temp;
  for (i = 0; i < size; i++) {
    for (j = (size - 1); j > i; j--) {
      if (num[j-1] > num[j]) {
        temp = num[j-1];
        num[j-1] = num[j];
        num[j] = temp;
      }
    }
  }
}
int main(void) {
    FILE *in1, *in2, *out;
    int n1=0, n2=0;
    double *a;
    double m;
    int i;
    double r;
    int n=0;
    char s1[100], s2[100], s3[100];
    printf("Name1: \n");
    scanf("%s",s1);
    printf("Name2: \n");
    scanf("%s",s2);
    printf("Name3: \n");
    scanf("%s",s3);
    in1=fopen(s1,"r");
    in2=fopen(s2,"r");
    out=fopen(s3,"w");
 
    if((in1==NULL)||(in2==NULL))
    {
      printf("error");
      fclose(in1);
      fclose(in2);
      return -1;
    }
 
    if((fscanf(in1,"%lf",&r))!=1){
    printf("error");
    fclose(in1);
    return -2;
    }
    else n1++;
    if((fscanf(in2,"%lf",&m))!=1){
      printf("error");
    fclose(in2);
    return -3;
    }
    else n2++;
    while(!feof(in1))
    {
        fscanf(in1,"%lf",&r);
        n1++;
    }
    while(!feof(in2))
    {
        fscanf(in2,"%lf",&r);
        n2++;
    }
    n=n1+n2;
    a = (double*)malloc(n*sizeof(int));
    for (i=0; i<n1; i++){
    fscanf(in1, "%lf", &r);
    a[i]=r;
    }
    for (i=n1; i<n; i++){
    fscanf(in2, "%lf", &r);
    a[i]=r;
    }
    Sort(a, n);
    for (i=0; i<n; i++){
      printf("%lf\n", &a[i]);
      fprintf(out, "%lf\n", &a[i]);
     }
     fclose(in1);
     fclose(in2);
     fclose(out);
     return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2016, 23:45
Ответы с готовыми решениями:

Ошибка сегментации
всем здраствуйте. double power(double n, int p) //определение функции 22 { 23 if (n...

Ошибка сегментации
собственно прикрепляю проект (code::blocks). при запуске вылетает ошибка. почему - хз.

Ошибка сегментации
Написал программу, которая по схеме Горнера преобразует многочлен до квадратного уравнения. По...

Ошибка сегментации
# include &lt;sys/types.h&gt; # include &lt;sys/times.h&gt; # include &lt;sys/socket.h&gt; # include &lt;stdio.h&gt; #...

Ошибка сегментации gcc
Здравствуйте, уважаемы форумчане) Пытаюсь реализовать шифр Плейфера. Компилируется нормально,...

5
shvyrevvg
746 / 555 / 278
Регистрация: 12.05.2016
Сообщений: 1,611
11.12.2016, 07:57 2
Цитата Сообщение от N0rthman Посмотреть сообщение
C
1
a = (double*)malloc(n*sizeof(int));
Выделятее память для int элементов и приводите ее к double*.
1
N0rthman
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 3
11.12.2016, 15:42  [ТС] 3
Окей, спасибо, поправил. Но теперь выводит одни нули, в чем теперь может быть проблема?
0
shvyrevvg
746 / 555 / 278
Регистрация: 12.05.2016
Сообщений: 1,611
11.12.2016, 15:58 4
N0rthman, Вы в цикле достигли конца файла и пытаетесь в следующем цикле его читать. Почитайте про функцию fseek().
0
N0rthman
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 3
11.12.2016, 16:04  [ТС] 5
Хорошо, спасибо.
0
shvyrevvg
746 / 555 / 278
Регистрация: 12.05.2016
Сообщений: 1,611
11.12.2016, 16:14 6
И еще, в printf, fprintf передается значение, а не адрес(просто a[i])
0
11.12.2016, 16:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2016, 16:14

Непонятная ошибка сегментации
Собственно код #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;unistd.h&gt; #include &lt;stdlib.h&gt;...

Парсинг строки и ошибка сегментации
Здраствуйте. Нужно было распарсить строчку. Взялся за strtok. Написал небольшой пример, для себя,...

GSL и Windows XP: ошибка сегментации
Доброго времени суток. Я пишу дипломную работу, в которой требуется создание приложения, причем...


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

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

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