Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
19 / 19 / 2
Регистрация: 26.06.2010
Сообщений: 181
1

Ошибка сегментации при создании списка

09.04.2011, 14:10. Показов 1218. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здрасти)))
Вот такая небольшая проблема со списком)))) список читаем из файла и сортируем его)) список из целых чисел)) и прост на экран вывести)) у нас пока 1 лекция ток была по си.. и самому интересно стало и сам начал разбираться вот дошел до списков и застрял((...
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
struct Node
           {
        int ch;
        Node *next;
       };
typedef Node *pNode;
 
main(){
clrscr();
int i;
 pNode First = NULL, Curr = NULL, Last = NULL;
  FILE *f;
  f=fopen("file.txt", "r");
 
  if ((f=fopen("file.txt", "r"))==NULL)
     {
      printf("\n Fayla net!!!");
      getch();
     return 1;
     }
.................
................
 First = new Node;
     Curr = First;
    
       for (i=0; i<count; i++)
      
        if (fscanf(f, "%d", Last->ch)==0)
        {
         Last->next = new Node;
         Last = Last->next;
        }
 
 
   Curr = First;
     do
       {
      printf(" %3d",Curr->ch);
      Curr = Curr->next;
       }
    while (Curr == NULL);
 
fclose(f);
............
вот он чет не создает этот список(( ошибка сегментации((

еще если можно не смогли б подсказать как узнать сколько чисел в файле записанно))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2011, 14:10
Ответы с готовыми решениями:

Ошибка сегментации при выводе графа
Вечер добрый, г-да программисты! Ниже приведены фрагменты из программы, описывающей и выводящей...

Ошибка сегментации при попытке создать массив
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; void init(int* arr, int n) { arr = malloc(n *...

Ошибка сегментации при поиске уникальных строк в файле
Здравствуйте.Есть программа, которая находит уникальные айпи адреса в файле, колличество их...

Ошибка сегментации при добавлении узла бинарного дерева
делал реализацию добавления узла в бинарное дерево, но ловлю сегфолт, почему ? что здесь не так?...

4
-12 / 19 / 4
Регистрация: 17.12.2010
Сообщений: 355
09.04.2011, 14:21 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
#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;
 
struct Node
           {
            int ch;
            Node *next;
           };
typedef Node *pNode;
 
main(){
int count;
int i;
 pNode First = NULL, Curr = NULL, Last = NULL;
  FILE *f;
  f=fopen("file.txt", "r");
 
  if ((f=fopen("file.txt", "r"))==NULL)
     {
      printf("\n Fayla net!!!");
      getch();
     return 1;
     }
 
 First = new Node;
     Curr = First;
    
       for (i=0; i<count; i++)
          
            if (fscanf(f, "%d", Last->ch)==0)
            {
             Last->next = new Node;
             Last = Last->next;
            }
 
 
   Curr = First;
     do
       {
          printf(" %3d",Curr->ch);
          Curr = Curr->next;
       }
    while (Curr == NULL);
 
fclose(f);
}
Вот так на с++ работает.
1
19 / 19 / 2
Регистрация: 26.06.2010
Сообщений: 181
09.04.2011, 14:40  [ТС] 3
блин мне говорили что new это ООП .. тока там используется.... в си чет другое вроде каккой то malloc & calloc чет вроде этого

Добавлено через 14 минут
пилин((( может с сортировкой поможет кто((
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
09.04.2011, 16:42 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
85
86
87
88
89
90
91
92
93
94
#include <stdio.h>
#include <stdlib.h>
 
typedef struct Item* pItem;
struct Item
{
    int value;
    pItem next;
};
 
pItem new_item(int value)
{
    pItem newp = (pItem)malloc( sizeof(struct Item) );
    newp->value = value;
    newp->next = NULL;
 
    return newp;
}
 
//-------------
 
pItem push_back(pItem listp, pItem newp)
{
    pItem p;
    if(listp == NULL) return newp;
    for(p = listp; p->next != NULL; p = p->next);
    p->next = newp;
 
    return listp;
}
 
//-------------
 
void print_list(pItem listp)
{
    while(listp)
    {
        printf("%d ", listp->value);
        listp = listp->next;
    }
    putchar('\n');
}
 
//-------------
 
void sort(pItem listp)
{
    int i;
    pItem p1, p2;
 
    for(p1 = listp; p1; p1 = p1->next)
    {
        for(p2 = listp; p2; p2 = p2->next)
        {
            if(p1->value < p2->value)
            {
                i = p1->value;
                p1->value = p2->value;
                p2->value = i;
            }
        }
    }
}
 
void clean_up(pItem listp)
{
    pItem p;
    while(listp)
    {
        p = listp->next;
        free(listp);
        listp = p;
    }
}
 
//-------------
int main()
{
    int i;
    pItem listp = NULL;
 
    for(i = 10; i >= 1; --i) listp = push_back(listp, new_item(i));
 
    puts("Before:");
    print_list(listp);
 
    puts("After:");
    sort(listp);
    print_list(listp);
 
    clean_up(listp);
 
    return 0;
}
1
19 / 19 / 2
Регистрация: 26.06.2010
Сообщений: 181
09.04.2011, 18:40  [ТС] 5
C
1
2
3
4
5
6
7
8
9
pItem push_back(pItem listp, pItem newp)
{
    pItem p;
    if(listp == NULL) return newp;
    for(p = listp; p->next != NULL; p = p->next);
    p->next = newp;
 
    return listp;
}
можног эту вещицу объяснить чет не догнал я(

Добавлено через 6 минут
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <stdio.h>
#include <conio.h>
#include <windows.h> 
#include <string.h>
#define N 100;
 struct Node 
        {
          int ch;
          Node *next;   
        };
 typedef Node *pNode;
//---------------------------------------//
pNode new_item(int ch)
{
    pNode newp = (pNode)malloc( sizeof(struct Node) );
    newp->ch = ch;
    newp->ch = NULL;
 
    return newp;
}
 
//------------------------------------------------------//
 
pNode push_back(pNode Curr, pNode newp)
{
    pNode p;
    if(Curr == NULL) return newp;
    for(p = Curr; p->next != NULL; p = p->next);
    p->next = newp;
 
    return Curr;
}
//---------------------------------------------------//
void sort(pNode Curr)
{
    int i;
    pNode p1, p2;
 
    for(p1 = Curr; p1; p1 = p1->next)
    {
        for(p2 = Curr; p2; p2 = p2->next)
        {
            if(p1->ch < p2->ch)
            {
                i = p1->ch;
                p1->ch = p2->ch;
                p2->ch = i;
            }
        }
    }
}
 
 
void input(pNode Curr)
{
    while(Curr)
    {
        printf("%d ", Curr->ch);
        Curr = Curr->next;
    }
    putchar('\n');
}
 
main ()
{    
     //-----------------------------------------------------//
SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 //---------------------------------------------------------//
 pNode  First = NULL, Curr = NULL, Last = NULL;
  int i, j, k, count = 0, A[100];
   FILE *file;
    char str[100];
 //--------------------------------------------------------//
  //clrscr();
 //---------------------------------------------------------//
 while (1)
 { 
  puts(" Ââåäèòå èìÿ ôàéëà ñ ðàñøèðåíèåì Ïðèìåð: ÈìÿÔàéëà.Òèï :> ");
  gets(str);
  
  file = fopen(str,"r");
   if ((file = fopen(str,"r"))==NULL)
     {
       printf("\n Îøèáêà!! Ôàéë ñ èìåíåì %s íå íàéäåí èëè ôàéë ïóñò\n",str);
        printf("\nÂâåñòè çàíîâî?? Yes/No Y/N\n :> ");
         gets(str);
          if ((strncmp(str,"Yes",1))==0)
           {
            continue;
           }
             else
            {
               system("pause");
               return 1;
             }
       }
     else 
       {
       printf("\n Ôàéë %s áûë óñïåøíî îòêðûòü äëÿ ÷òåíèÿ!!\n",str);
     break;
     } 
 }
//------------------------------------------------------------//
    for(i = 10; i >= 1; --i) Curr = push_back(Curr, new_item(i));
 
    puts("Before:");
    input(Curr);
 
    puts("After:");
    sort(Curr);
    input(Curr);
 
    clean_up(Curr); 
      
 getch();
 return 0;    
 }
вот опять ошибка сегментации((
0
09.04.2011, 18:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2011, 18:40
Помогаю со студенческими работами здесь

Ошибка при создании списка классов
Доброго времени суток! Подскажите в чем причина ошибки. namespace Objects { public abstract...

Ошибка при создании 2-го элемента динамического списка
НЕ могу понять откуда как исправить данную ошибка . Выскакивает как мне кажется при попытке...

Ошибка при создании линейного списка с типом данных в виде пользовательского класса
Добрый день. Помогите понять в чем ошибка при создании списка? int main() { setlocale(LC_ALL,...

Ошибка при создании дескриптора окна при динамическом создании кнопок
public Form1() { InitializeComponent(); } int height = 10;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru