0 / 0 / 1
Регистрация: 13.04.2009
Сообщений: 38
1

Двунаправленный список - чтение данных с файла и клавиатуры

18.03.2010, 10:20. Показов 1311. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста найти ошибку. Задача такова, реализовать двунаправленный список, сначала данные считываются из файла, а потом по извлечению всех данных дополнительно записи вводятся с клавиатуры. Далее п определенному полю записи удаляются и должны быть аписаны в бинарный файл temp.bin. В общем то все что я перечислил работает, кроме записи в файл, а именно функции Save. Она найтрез отказывается создавать или открывать файл. Вот код, подскажите как исправить проблемму.
Функция Save:
C
1
2
3
4
5
6
7
8
9
10
11
12
int Save(const char *name)
{ 
  FILE *f = fopen(name, "wb");
  if(!f) return 1;
  curr = head;
  while(curr){
     fprintf(f, "%s %s %u %u\n", curr->value.mark, curr->value.model, curr->value.serial, curr->value.year); 
    curr = curr->next;
  }
  fclose(f);
  return 0;
}
main.c
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
#include "list.h"
#include "input.h"
#include <stdio.h>
#include <string.h>
 
int main(int argc, char *argv[])
{
char new_file_name[100], temp[100];
int len_name;
   if(argc != 2){ 
      puts("The file name is not entered!");
    puts("Enter records from the keyboard!");
  strcpy(new_file_name, "temp.bin");
 
   Create();
   Car st;
      while(1){
         int res = Input_StdIn(&st);
         if(res == 1) break;
         if(res == 2){
            puts("Incorrect value!");
            continue;
         }
      if(Add(&st)){
         puts("There is not enough memory!");
         break;
      }
      }
printf("Enter new record:\n");
Input_StdIn(&st);
Ins(&st);
Del();
printf("==================================\n");
Del_god();
if(Save(new_file_name)) puts("File recording error!");
else puts("The file is written!");
Destroy();
   return 0;
   }
 
 
  strcpy(new_file_name, argv[1]);
  len_name=strlen(new_file_name);
  len_name-=4;
  temp[len_name]=0;
  strncpy(temp, new_file_name, len_name);
  new_file_name[0]=0;
  strcpy(new_file_name, temp);
  strcat(new_file_name, ".bin");
  printf("New file name: \n");
  puts(new_file_name);
  Create();
  Car st;
  FILE *r = NULL;
  r = fopen(argv[1],"r");
  while(!feof(r)){
     fgets(str, 99, r);
     puts(str);
     Input_File(&st);
     Add(&st);
 
  }
printf("Enter new record:\n");
Input_StdIn(&st);
Ins(&st);
printf("==================================\n");
Del_god();
if(Save(new_file_name)) puts("File recording error!");
else puts("The file is written!");
Destroy();
fclose(r);
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2010, 10:20
Ответы с готовыми решениями:

Чтение из файла в список (двунаправленный), используя структуру
Добрый день, немного запутался со списками, и файлом... Будьте добры, помогите разобраться. Есть...

Двунаправленный список своими руками, нарушение доступа на чтение
Делаю лабу по двунаправленному списку Сделал добавление и отображение, но получаю исключение &quot;По...

Чтение данных из файла в список
Здравствуйте, помогите пожалуйста! Составить правило для чтения данных из файла в список....

Ввести из текстового файла данные в двунаправленный список
Ввод данных в оперативную память в двунаправленный список из текстового файла. Как мне ввести из...

2
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
18.03.2010, 10:36 2
а как save видет список??
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
18.03.2010, 16:42 3
Цитата Сообщение от Horrorous Посмотреть сообщение
C
1
2
3
4
...
curr = head; 
while(curr){
...
Ни curr, ни head нигде в функции не объявлены. Надо в функцию кроме имени файла ещё и указатель на начало списка передавать...
0
18.03.2010, 16:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2010, 16:42
Помогаю со студенческими работами здесь

Переделать в коде чтение из файла в чтение с клавиатуры
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл...

Отсортировать массив данных о студентах, поместить его в двунаправленный список
заполнить динамический массив данных о студентах. Отсортировать его по факультетам. Отсортированный...

Создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним
Нужно создать двунаправленный список с закрытыми членами данных и с организацией доступа к ним.Так...


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

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

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