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

Чтение массива структур из текстового файла

14.11.2011, 18:25. Просмотров 3217. Ответов 3
Метки нет (Все метки)

Задание таково:
есть структура из 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
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <stdio.h>
#include <conio.h>
main()
{
      int n,i,j,c,identifier;
      double x,z;
      FILE *file;
      struct book
      {
             double nom;//number phone
             char com[20];//comments
      }
      temp,a[20];
do
{
      system("cls");
      printf("\nCourse engineering:'Phonebook'\n");
      printf("Work has executed:x.x.x.,12-91 group,2011\n\n");
      printf("\nSelect the action:\n");
      printf("Enter   data            ---- '1'\n");
      printf("Output  data            ---- '2'\n");
      printf("Sorting data            ---- '3'\n");
      printf("Write data to the file  ---- '4'\n");
      printf("Read data from file     ---- '5'\n");
      printf("Exit                    ---- '6'\n");
      printf("\n");
      printf("Your choice:");
      scanf("%d",&c);
      if (c==1)
      {
               system("cls");
               printf("Enter Number of records<20:");//number of records
               scanf("%d",&n);
               while (n>20||n<1)
               {
                     printf("Invalid input.Repeat,please:");
                     scanf("%d",&n);
               }
               printf("\n");
               for(i=0;i<n;i++)//input records
               {
                        printf("%d record:\n",i+1);
                        printf("Enter ten-digit phone number:");
                        scanf("%lf",&z);a[i].nom=z;
                        while(a[i].nom<1000000000.0||a[i].nom>9999999999.0)
                        {
                            printf("Invalid input.Repeat,please:");
                            scanf("%lf",&z);
                            a[i].nom=z;
                        }
                        printf("Enter comments (max 20 symbols):");
                        scanf("%s",&a[i].com);
                        printf("\n");
               }
               identifier=1;
      }
      if (c==2)
      {
               system("cls");
               if (identifier!=1)
               {
                   printf("\n<DATA NOT AVIABLE!>\a\n");
                   printf("Please first enter the data - Key '1'.Or read data from file - Key '5'\n");
               }
               else
               {
                   printf("\n'Phonebook':\n");
                   printf("\nNumber phone        |            Comments\n");
                   printf("-----------------------------------------");
                   for(i=0;i<n;i++)
                   {
                        printf("\n");
                        printf("%10.0lf          |%20s",a[i].nom,a[i].com);
                   }
               }
               printf("\nPress 'Enter' to continue...");
               getch();
      }
      if (c==3)
      {
               system("cls");
               if (identifier!=1)
               {
                   printf("\n\n<DATA NOT AVIABLE!>\a\n");
                   printf("Please first enter the data - Key '1'. Or read data from file - Key '5'.\n\n");
                   printf("\n\nPress 'Enter' to continue...");
               }
               else
               {
                   for(i=0;i<n-1;i++)
                      for(j=n-2;j>=i;j--)
                      if (a[j+1].nom<a[j].nom)
                      {
                          temp=a[j];
                          a[j]=a[j+1];
                          a[j+1]=temp;
                      }
               printf("\nSort succeed! \1 \1 \1 \a\n");
               printf("\nPress 'Enter' to continue...");
               }
               getch();
      }
      if (c==4)
      {
               system("cls");
               file=fopen("Rezult.txt","w");
               for(i=0;i<n;i++)
               fprintf(file,"%.0lf \t %s\n",a[i].nom,a[i].com);
               fclose(file);
               printf("\nWrite data to the file was successful!\1 \1 \1 \a\n");
               printf("\n\nPress 'Enter' to continue...");
               getch();
      }
      if (c==5)
      {
               system("cls");
               file=fopen("Rezult.txt","r");
               i=0;
               while(!eof(file))
               {
                  fscanf(file,"%lf%s",&x,&a[i].com);
                  a[i].nom=x;
                  i++;
               }
               fclose(file);
               printf("\n\nReading to a file was successful! \1 \1 \1 \a\n");
               printf("\n\nPress 'Enter' to continue...");
               getch();
               identifier=1;
      }
}
while(c!=6);
}
Пункт чтения массива структур из файла реализуется при с==5
Подскажите пжлст в чем ошибка?что я делаю не так?почему не считывает?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 18:25
Ответы с готовыми решениями:

Чтение массива структур из файла
читаю по while !feof(), проблема в том, что если файл пустой, то все равно проскакивает на одну...

Чтение массива структур из файла
Здравствуйте, помогите решить проблемку. Имеется функция чтения: int Read(MPh Pdata, int len) {...

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

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

Чтение и запись массива структур
Добрый вечер! Прошу помощи, так как уже не знаю что делать: вот задание Данные о книгах на...

3
accept
4835 / 3257 / 464
Регистрация: 10.12.2008
Сообщений: 10,569
15.11.2011, 05:35 2
http://www.cyberforum.ru/post2172486.html

C
1
2
        while (fscanf(file, "%lf %s", &x, a[i].com) == 2)
            printf("%.f %s\n", x, a[i].com);
0
apraxie
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 15
15.11.2011, 22:46  [ТС] 3
ну здесь же считывается переменная x типа double
а мне нужно считать поле записи a[i].nom
как это сделать?
0
accept
4835 / 3257 / 464
Регистрация: 10.12.2008
Сообщений: 10,569
15.11.2011, 23:47 4
C
1
2
        while (fscanf(file, "%lf %s", &a[i].nom, a[i].com) == 2)
            printf("%.f %s\n", a[i].nom, a[i].com);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2011, 23:47

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

Чтение данных из текстового файла
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;math.h&gt; using namespace System; double...

Как осуществить чтение текстового файла
Добрый день, я абсолютный лол в программировании, поэтому столкнулся с проблемой. Не могу...


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

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

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