Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
#1

Сформировать типизированный файл - C++

19.01.2013, 17:55. Просмотров 920. Ответов 15
Метки нет (Все метки)

Сформировать типизированный файл, в котором хранится информация о сотрудниках подразделения: ФИО, место рождения, год рождения. На его основе сформировать файл сотрудников, родившихся в данном городе и распечатать его.


С использованием структур и без использования потоков.

Помогитеееее...

Вот примерное начало...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define n 5
int main ()
FILE *fi;
if ((fi=fopen("d:\\c\\file.txt", "a+"))==0) {
cout (("Error"; return 1; }
const int d1=100;
char s [d1];
struct {
char fio [20];
char mr [20];
int gr; }
m[n];
for(i=0; i<n; i++)
 Комментарий модератора 
Правила форума п. 5.5: Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе.


Добавлено через 21 минуту
Ребят, помогите!

Добавлено через 33 минуты
HELp!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2013, 17:55     Сформировать типизированный файл
Посмотрите здесь:

что такое типизированный файл? C++
Создания однонаправленного списка и сохранения в типизированный файл. C++
C++ Сохранение матриц больших размеров в типизированный файл
как в с++ создается типизированный файл? и как вообще понять типизированный? C++
Типизированный файл. Сведения о студентах. Стипендия C++
Бинарное дерево в типизированный файл C++
не типизированный файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
19.01.2013, 18:09     Сформировать типизированный файл #2
Use XML
Kuzia domovenok
1887 / 1742 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
19.01.2013, 18:16     Сформировать типизированный файл #3
да какое ХМЛ?? Человек не способен Hello World написать, если посмотришь на его код! Без обид, но советовать ХМЛ - не к месту.
Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 18:19  [ТС]     Сформировать типизированный файл #4
Эм, мне нужно только её немного доработать, да может кое-что не соображаю, форум насколько я знаю, называется : "Для начинающих".
Kuzia domovenok
1887 / 1742 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
19.01.2013, 18:29     Сформировать типизированный файл #5
Цитата Сообщение от Sirenka Посмотреть сообщение
Эм, мне нужно только её немного доработать, да может кое-что не соображаю, форум насколько я знаю, называется : "Для начинающих".
Если писал не сам - пиши с нуля и разбирайся сам. Судя по программе ты даже Hello world не способен написать. Изучать Си также не начинал. Что даст тебе готовая программа??? Мир потеряет ещё одного потенциального программиста, потому что один нерадивый ученик решил скатать работу, не вникая.

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
#include <stdio.h>
#define n 5
#define d1 100
struct record{
  char fio [20];
  char mr [20];
  int gr; 
}m[n];
int main (){
  FILE *fo;
  char s[d1];
  int i;
  if (!(fo=fopen("d:\\file.dat", "wb"))){
     printf ("Error!");
     return 1;
  }
  
  printf("input 5 records:\n");
  for (i=0; i<5; i++){
      fflush(stdin); puts("Input name:");       gets(m[i].fio);
      fflush(stdin); puts("Input mr:");         gets(m[i].mr);
      puts("Input gr(number):"); scanf("%d", &(m[i].gr));
  }
  fwrite (m,  sizeof(struct record) , n,  fo);
  fclose(fo);
  return 0;
}
Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 18:37  [ТС]     Сформировать типизированный файл #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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>        //подключение библиотек
struct price
{
    char name[50];
    int year;
    char place[30];
    struct price * pc;
};
void main()
{
    int n;
    struct price *rex;
    struct price *beg = NULL;
    struct price *end = NULL;
        printf("Vvedite znacheniya:\n");
        do
        {
            rex = (struct price *) malloc(sizeof(price));
            printf("Name: ");
            scanf("%s",&rex->name);
            printf("Mesto rojdeniya: ");
            scanf("%s",&rex->place);
            printf("Year: ");
            scanf("%d",&rex->year);
            if(rex->year == 0)
            {
                free(rex);
                break;
            }
            if(beg == NULL && end == NULL)      // список пуст
                beg = rex;
            else
                end->pc = rex;
            end = rex;
            end->pc = NULL;
        }
        while(1);                                                  // конец ввода
    rex = beg;
    FILE* fp1 = fopen("list.txt","w");
    while(rex != NULL)
    {
        printf("Name: %s, Mesto: %s, Year: %d\n",rex->name, rex->place, rex->year);
    fprintf(fp1,"Name: %s ; Mesto: %s ; Years: %d\n",rex->name, rex->place, rex->year);
        rex = rex->pc;
    }
    fclose(fp1);
    printf("Saved to file 'list.txt'");
getch();
}
Поэтому началА писать по-другому...

Добавлено через 4 минуты
Спасибо... у меня вопросик, почему режим открытия wb? Преподаватель советовала a+....
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
19.01.2013, 18:45     Сформировать типизированный файл #7
Пишеш в байтовом виде.A+ это когда ты дописываеш в конец.

Не по теме:

По всем вопросам-в скайп

Kuzia domovenok
1887 / 1742 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
19.01.2013, 18:45     Сформировать типизированный файл #8
a+ дозаписывает в уже существующий файл, в принципе его можно использовать вместо w
Но так как в задании ты требуешь создать бинарный файл, то приходится открывать файл как "a+b" либо как "w+b"
Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 18:51  [ТС]     Сформировать типизированный файл #9
Спасибо.
Kuzia domovenok
1887 / 1742 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
19.01.2013, 19:01     Сформировать типизированный файл #10
Ах да, и тут есть ещё один момент. Меня смутил заголовок "типизированные файлы" и я стал приводить пример, как записывать в БИНАРНЫЙ файл.
Типизированных же файлов в Си нет! Если не ошибаюсь, это кажется термин из Паскаля. Так что задание неверное.
Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 19:09  [ТС]     Сформировать типизированный файл #11
Всё может быть, но задание было такое...Именно типизированный файл...

А программа с использованием потоков?

Добавлено через 6 минут
И почему-то, настаивает делать через процедуры выводы/ввода: fprintf, fscanf
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
19.01.2013, 19:30     Сформировать типизированный файл #12
Э-хэ-хэ, выложили 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
#include <stdio.h>
#include <string.h>
 
#define MAX_N 5
 
int main ()
{
    FILE *fi = fopen("d:\\c\\file.txt", "a+" );
 
    if ( fi == 0 ) { puts( "Error" ); return 1; }
 
    struct
    {
        char fio [20];
        char mr [20];
        int gr;
    } m[ MAX_N ], t;
    int n = 0;
    char place[ 20 ];
 
// читаем данные из stdin
    puts( "Enter employees data" );
    while ( !feof( stdin ) && n < MAX_N )
    {
        scanf( "%s %s %d", m[ n ].fio, m[ n ].mr, &( m[ n ].gr ) );
        ++n;
    }
// записываем их в file.txt
    for ( int i = 0; i < n; ++i )
        fprintf( fi, "%s %s %d ", m[ i ].fio, m[ i ].mr, m[ i ].gr );
 
    FILE *fi2 = fopen( "d:\\c\\file2.txt", "w" );
 
    if ( fi2 == 0 ) { puts( "Another Error" ); return 1; }
 
// просим ввести место
    printf( "enter mr: " ); scanf( "%s", place );
 
// честно вычитываем данные из только что созданного файла и если они удовлетворяют условию, то записываем их в файл file2.txt
    fseek( fi, 0, SEEK_SET );
    for ( int i = 0; i < n; ++i )
    {
        fscanf( fi, "%s %s %d", t.fio, t.mr, &( t.gr ) );
        if ( strcmp( place, t.mr ) == 0 )
            fprintf( fi2, "%s %s %d\n", t.fio, t.mr, t.gr );
    }
 
    return 0;
}
Не знаю как тут с типизированностью, но если препод просит через fprintf, и fscanf, то должно быть правильно.

Да, и не забывайте перед очередным запуском программы удалять файл file.txt.
Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 19:41  [ТС]     Сформировать типизированный файл #13
Спасибо
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
19.01.2013, 19:44     Сформировать типизированный файл #14
чтобы не удалять файл каждый раз, используй ключ w.
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
19.01.2013, 19:47     Сформировать типизированный файл #15
Цитата Сообщение от Invader_Zim Посмотреть сообщение
чтобы не удалять файл каждый раз, используй ключ w.
неа, потом файл еще и для чтения используется. так что тут только a+. А '+' потому, что в режиме а не работает fseek
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 19:49     Сформировать типизированный файл
Еще ссылки по теме:

C++ Создание и запись в типизированный файл
Имеется типизированный файл с числами, напечатать все его элементы большие числа a с++ C++
C++ Записать все числа массива в типизированный файл в том же порядке
C++ Типизированный файл
Разработать программу реализующую чтение и запись в типизированный файл C++

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

Или воспользуйтесь поиском по форуму:
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
19.01.2013, 19:49     Сформировать типизированный файл #16
В код не сильно вникаю.
Но если надо гупнуть файл, то в конце std::remove(filename)
Yandex
Объявления
19.01.2013, 19:49     Сформировать типизированный файл
Ответ Создать тему
Опции темы

Текущее время: 20:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru