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

Поиск данных в файле по ключевому полю - C++

Восстановить пароль Регистрация
 
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
24.05.2010, 01:03     Поиск данных в файле по ключевому полю #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
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
// 16.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
 
struct  BOOK
{
    char *name;
    char *avtor;
    char *tematika;
    char  *godvipuska;
    char *ISBN;
    char *izdatelstvo;
};
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3];
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
            k[i].name = new char [Amax];
            scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
            k[i].avtor = new char [Amax];
            scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
            k[i].tematika = new char [Amax];
            scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
            k[i].godvipuska = new char [Amax];
            scanf_s("%s",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
            k[i].ISBN = new char [Amax];
            scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
            k[i].izdatelstvo = new char [Amax];
            scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %s %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %s %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
    
 
 
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
}
    _getch();
      return 0;
}
Добавлено через 5 часов 15 минут
помогите кто-нить

Добавлено через 17 часов 59 минут
ау, народ ну помогите мне пж, или киньте ссылку где можно про это почитать, а то найти не могу

Добавлено через 7 часов 25 минут
......
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2010, 01:03     Поиск данных в файле по ключевому полю
Посмотрите здесь:

поиск в файле C++
Поиск по любому полю структуры C++
Есть-ли поиск по полю в STL? C++
C++ Поиск данных в текстовом файле
поиск в файле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.05.2010, 08:39     Поиск данных в файле по ключевому полю #2
Я бы указатели в структуре заменил статическими массивами и для записи\чтения использовал функции fwrite\fread.
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
24.05.2010, 08:54     Поиск данных в файле по ключевому полю #3
Цитата Сообщение от Luna17 Посмотреть сообщение
struct BOOK
{
char *name;
char *avtor;
char *tematika;
char *godvipuska;
char *ISBN;
char *izdatelstvo;
};

Я бы эту структуру написал бы так
C++
1
2
3
4
5
6
7
8
9
typedef struct
{
 char name[100];
 char avtor[50];
 char tematika[100];
 char godvipuska[10]; //Формат (14.06.2010). Здесь бы что то другого типа SYSTEMTIME
 char ISBN[100]; //ТОчно не помню но у него тоже фиксированая длина
 char izdatelstvo[100];
}BOOK, *PBOOK;
Добавлено через 2 минуты
А дальше просто
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FILE* fil;
BOOK book;
 
fil = fopen("book.txt", "r");
 
while(!feof(fil)){
 
fread(&book, sizeof(book), 1, fil);
 
//Выводиде 
 
}
 
fclose(fil);
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
24.05.2010, 20:16  [ТС]     Поиск данных в файле по ключевому полю #4
Если я правильно поняла, то должно вот так получаться, но у меня возникают ошибки при компиляции, их было 15, я доправила до 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
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
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
 
typedef struct  
{
    char name[100];
    char avtor[50];
    char tematika[100];
    int  godvipuska[10];
    char ISBN[100];
    char izdatelstvo[100];
}BOOK, *PBOOK;
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
FILE* fil = fopen("book txt", "r+t");
while( !feof(fil));
{
    fread(&book, sizeof(book), 1, fil);
}
 
fclouse(fil);
 
 
 
 
 
 
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3], book;
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
                        scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
                        scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
                        scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
                        scanf_s("%s",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
                        scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
                    scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %i %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %i %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
    
FILE* fil = fopen("book txt", "w+t");
while(!feof(fil)){
 
fread(&book, sizeof(book), 1, fil); //Выводиде 
 
}
 
fclose(fil);
 
fclose(fil);
 
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
}
    _getch();
      return 0;
}
Компиляция
Ошибка 2 error C2059: синтаксическая ошибка: while c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 36
Ошибка 5 error C2440: инициализация: невозможно преобразовать 'FILE *' в 'int' c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 41
Ошибка 3 error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 37
Ошибка 4 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 41
Предупреждение 6 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 122
Предупреждение 7 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 123
Предупреждение 8 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 124
Предупреждение 9 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 125
Предупреждение 10 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 126
Предупреждение 11 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 127
Предупреждение 1 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 35
besh]<a
 Аватар для besh]<a
12 / 10 / 1
Регистрация: 02.11.2009
Сообщений: 194
24.05.2010, 20:43     Поиск данных в файле по ключевому полю #5
stdio iostream fstream conio 4 библиотеки для вывода на экран... хватило бы и первой
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
24.05.2010, 20:57  [ТС]     Поиск данных в файле по ключевому полю #6
Цитата Сообщение от besh]<a Посмотреть сообщение
stdio iostream fstream conio 4 библиотеки для вывода на экран... хватило бы и первой
если оставить тока stdio то ошибок вместо 4 становиться 8.

Добавлено через 3 минуты
Добаваила скобки осталась одна ошибка
Компиляция:Ошибка 2 error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 36
Предупреждение 3 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 123
Предупреждение 4 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 124
Предупреждение 5 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 125
Предупреждение 6 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 126
Предупреждение 7 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 127
Предупреждение 8 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 128
Предупреждение 1 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 36

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
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
 
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <conio.h>
 
typedef struct  
{
    char name[100];
    char avtor[50];
    char tematika[100];
    int  godvipuska[10];
    char ISBN[100];
    char izdatelstvo[100];
}BOOK, *PBOOK;
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
FILE* fil = fopen("book txt", "r+t");
{
while( !feof(fil));
{
    fread(&book, sizeof(book), 1, fil);
}
 
fclouse(fil);
}
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3], book;
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
                        scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
                        scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
                        scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
                        scanf_s("%s",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
                        scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
                    scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %i %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %i %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
    
FILE* fil = fopen("book txt", "w+t");
while(!feof(fil)){
 
fread(&book, sizeof(book), 1, fil); //Выводиде 
 
}
 
fclose(fil);
 
fclose(fil);
 
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
}
    _getch();
      return 0;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.05.2010, 20:58     Поиск данных в файле по ключевому полю #7
Строки 115-125 удалить, во всех scanf'ах убрать символы &, они сдесь лишние.
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
24.05.2010, 21:12  [ТС]     Поиск данных в файле по ключевому полю #8
всеравно 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
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
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
 
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <conio.h>
 
typedef struct  
{
    char name[100];
    char avtor[50];
    char tematika[100];
    int  godvipuska[10];
    char ISBN[100];
    char izdatelstvo[100];
}BOOK, *PBOOK;
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
FILE* fil = fopen("book txt", "r+t");
{
while( !feof(fil));
{
    fread(&book, sizeof(book), 1, fil);
}
 
fclouse(fil);
}
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3], book;
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
                        scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
                        scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
                        scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
                        scanf_s("%s",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
                        scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
                    scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %i %s %s \n", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %i %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
    
FILE* fil = fopen("book txt", "w+t");
while(!feof(fil)){
 
fread(&book, sizeof(book), 1, fil); //Выводиде 
 
}
 
fclose(fil);
 
 
 
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
}
    _getch();
      return 0;
}
Компилятор:
Ошибка 2 error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 37
Предупреждение 3 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 119
Предупреждение 4 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 120
Предупреждение 5 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 121
Предупреждение 6 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 122
Предупреждение 7 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 123
Предупреждение 8 warning C4154: удаление массива; выполнено преобразование к указателю c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 124
Предупреждение 1 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 36
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
24.05.2010, 21:19     Поиск данных в файле по ключевому полю #9
Последний пост:
1) К какой функции относятся строки 33-41? Правильно ни к какой, на них компилятор и ругается.
2)
Цитата Сообщение от Luna17 Посмотреть сообщение
for (i=0; i<3; i++)
{
delete[] k[i].avtor;
delete[] k[i].godvipuska;
delete[] k[i].ISBN;
delete[] k[i].izdatelstvo;
delete[] k[i].name;
delete[] k[i].tematika;
}
удалить.
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
24.05.2010, 23:36  [ТС]     Поиск данных в файле по ключевому полю #10
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
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
 
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <conio.h>
 
typedef struct  
{
    char name[100];
    char avtor[50];
    char tematika[100];
    int  godvipuska[10];
    char ISBN[100];
    char izdatelstvo[100];
}BOOK, *PBOOK;
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
FILE* fil = fopen("book txt", "r+t");
{
while( !feof(fil));
{
    fread(&book, sizeof(book), 1, fil);
}
 
fclouse(fil);
}
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3], book;
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
                        scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
                        scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
                        scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
                        scanf_s("%s",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
                        scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
                    scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %i %s %s \n", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %i %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
    
FILE* fil = fopen("book txt", "w+t");
while(!feof(fil)){
 
fread(&book, sizeof(book), 1, fil); //Выводиде 
 
}
 
fclose(fil);
 
    _getch();
      return 0;
}
Всеравно идет ошибка при компиляции
Ошибка 2 error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) c:\users\вероника\documents\visual studio 2008\projects\16\16\16.cpp 37

Добавлено через 4 минуты
Цитата Сообщение от kazak Посмотреть сообщение
Последний пост:
1) К какой функции относятся строки 33-41? Правильно ни к какой, на них компилятор и ругается.
А это как я поняла, выше, это теоретически должен был быть поиск данных в файле по ключевому, полю, но я вроде напутала что то

Добавлено через 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
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
 
struct  BOOK
{
    char *name;
    char *avtor;
    char *tematika;
    int   *godvipuska;
    char *ISBN;
    char *izdatelstvo;
};
 using namespace std;
const int Amax=255;
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
 
        
 
 
int _tmain()
{    
    setlocale (LC_ALL, "Russian");
    
    BOOK k[3];
    int i, j;
 
 
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
            k[i].name = new char [Amax];
            scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
            k[i].avtor = new char [Amax];
            scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
            k[i].tematika = new char [Amax];
            scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
            k[i].godvipuska = new int [Amax];
            scanf_s("%d",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
            k[i].ISBN = new char [Amax];
            scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
            k[i].izdatelstvo = new char [Amax];
            scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
 
      fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %d %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
 
 
for (i=0; i<3; i++)
      {
          printf("%s %s %s %d %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
 
 
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
}
    _getch();
      return 0;
}
Добавлено через 1 час 58 минут
подскажите как можно сделать поиск в файле по ключевому полю, или для начала, как можно из 1ого файла в другой строки перенести. т е скопировать
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
25.05.2010, 09:28     Поиск данных в файле по ключевому полю #11
Цитата Сообщение от Luna17 Посмотреть сообщение
const int Amax=255;
У Вас теперь все поля разной длины, поэтому его использовать бесполезно

Добавлено через 1 минуту
Ссори чет выше не посмотрел пост

Добавлено через 38 минут
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
#include <locale.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
typedef struct  
{
        char name[100];
        char avtor[50];
        char tematika[100];
        char godvipuska[10];
        char ISBN[100];
        char izdatelstvo[100];
}BOOK, *PBOOK;
 
 
ostream& operator<<(ostream& out, BOOK &J)
 { 
         out<<"\n фамилия автора : "<<J.avtor;
         out<< "\n тематика книги : "<<J.tematika;
         out<<"\n год выпуска : "<<J.godvipuska;
         out<< "\n ISBN: "<<J.ISBN;
         out<<"\n издательство: "<<J.izdatelstvo;
         return out;
 }
 
 
int main()
{   
   setlocale (LC_ALL, "Russian");        
   BOOK book, b[3];
   int i;
   FILE *f;
 
 
    f=fopen("katalogizator.txt","w+t");
    if (!f){
        cout<<"Ошибка открытия файла"<<endl;
        getch();
        return 1;
    }   
    for (i=0; i<3; i++)  { 
        memset(&book, 0, sizeof(book));
        printf("Запись № %d \n",i+1);
        cout<<"введите название книги:\t";      
        scanf_s("%s",book.name, 100);       
        cout<<"введите фамилию автора:\t";
        scanf_s("%s",book.avtor, 100);      
        cout<<"введите тематику книги:\t";
        scanf_s("%s",book.tematika, 50);        
        cout<<"введите год выпуска книги:\t";
        scanf_s("%s",book.godvipuska, 10);
        cout<<"введите ISBN книги:\t";
        scanf_s("%s",book.ISBN, 100); 
        cout<<"введите издательство книги:\t";
        scanf_s("%s",book.izdatelstvo, 100);        
        printf("\n");
        fwrite(&book, sizeof(book), 1 , f);
    }
    fclose(f);
 
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)  {
       cout<<"Ошибка открытия файла";
       getch();
       return 1;
    }
    fread(b,sizeof(BOOK), 3, f);
    fclose(f);
  
    for (i=0; i<3; i++) {
        printf("Запись № %d \n",i+1);
        printf("название: %s\n",b[i].name);
        printf("фамилия автора: %s\n",b[i].avtor);
        printf("тематика: %s\n",b[i].tematika);
        printf("год выпуска: %s\n",b[i].godvipuska);
        printf("ISBN: %s\n",b[i].ISBN);
        printf("издательство: %s\n",b[i].izdatelstvo);
        printf("\n");
    };
    getch();
    return 0;
}
Вот пример который записывает и считывает с файла информацию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2010, 20:42     Поиск данных в файле по ключевому полю
Еще ссылки по теме:

Сформировать массив данных с помощью структуры. Отсортировать полученный список по полю «год издания» C++
C++ КАК наладить поиск по ключевому слову
Поиск данных в файле по Фамилии C++

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

Или воспользуйтесь поиском по форуму:
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
26.05.2010, 20:42  [ТС]     Поиск данных в файле по ключевому полю #12
А можете подсказать, что надо вставить вместо &&&&&&&&&&&&&&&&&&&&( я так место отметила), чтобы читать из файла строку для сравнения с переменной temp которая вводится с клавиатуры
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
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string.h>
struct  BOOK
{
    char *name;
    char *avtor;
    char *tematika;
    int *godvipuska;
    char *ISBN;
    char *izdatelstvo;
};
 using namespace std;
const int Amax=255;
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
int main()
{    
    setlocale (LC_ALL, "Russian");
    BOOK k[3], h;
    int i;
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
            k[i].name = new char [Amax];
            scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
            k[i].avtor = new char [Amax];
            scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
            k[i].tematika = new char [Amax];
            scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
            k[i].godvipuska = new int [Amax];
            scanf_s("%d",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
            k[i].ISBN = new char [Amax];
            scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
            k[i].izdatelstvo = new char [Amax];
            scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
      fclose(f);
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf_s (f, "%s %s %s %d %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
for (i=0; i<3; i++)
      {
          printf(" %s %s %s %d %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
printf("введите название ключевого поля для поиска данных\t");
char *temp;
temp = new char [Amax];
scanf_s("%s", temp, Amax);
 
f=fopen("katalogizator.txt","r+t");
 
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
    {
if(strcmp(h.name,temp)== 0) printf(" \n Такая книга найдена в этой строке  %s %s %s %d %s %s ", h.name, h.avtor, h.tematika, h.godvipuska, h.ISBN, h.izdatelstvo, Amax);
 
else printf("\n Таких книг нет в строке %d"); 
    
}
fclose(f);
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
    _getch();
      return 0;
}
}
Добавлено через 1 час 44 минуты
помогите организовать структуру с whilе пока не закончится файл сравнивать строчку из файла с введеной с клавиатуры слова,( и есле найдены одинаковые - то вывести строчку - вот эта часть что в скобках есть, нужна та что перед этим)
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
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string.h>
struct  BOOK
{
    char *name;
    char *avtor;
    char *tematika;
    char  *godvipuska;
    char *ISBN;
    char *izdatelstvo;
};
 using namespace std;
const int Amax=255;
ostream& operator<<(ostream& out, BOOK &J)
 { 
     out<<"\n фамилия автора : "<<J.avtor;
     out<< "\n тематика книги : "<<J.tematika;
     out<<"\n год выпуска : "<<J.godvipuska;
     out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
     return out;
 }
int main()
{    
    setlocale (LC_ALL, "Russian");
    BOOK k[3], h;
    int i;
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
            k[i].name = new char [Amax];
            scanf_s("%s",k[i].name, Amax);
 
            printf ("введите фамилию автора\t");
            k[i].avtor = new char [Amax];
            scanf_s("%s",k[i].avtor, Amax);
 
            printf ("введите тематику книги\t");
            k[i].tematika = new char [Amax];
            scanf_s("%s",k[i].tematika, Amax);
 
            printf ("введите год выпуска книги\t");
            k[i].godvipuska = new char [Amax];
            scanf_s("%s",&k[i].godvipuska);
 
            printf ("введите ISBN книги\t");
            k[i].ISBN = new char [Amax];
            scanf_s("%s",k[i].ISBN, Amax);
 
            printf ("введите издательство книги\t");
            k[i].izdatelstvo = new char [Amax];
            scanf_s("%s",k[i].izdatelstvo, Amax);
 
            printf("\n");
        }
      fclose(f);
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf_s (f, "%s %s %s %s %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
for (i=0; i<3; i++)
      {
          printf(" %s %s %s %s %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
printf("введите название ключевого поля для поиска данных\t");
char *temp;
temp = new char [Amax];
scanf_s("%s", temp, Amax);
 
f=fopen("katalogizator.txt","a+t");
 
while
{
 
if(strcmp(h.name,temp)== 0) printf(" \n Такая книга найдена в этой строке  %s %s %s %s %s %s ", h.name, h.avtor, h.tematika, h.godvipuska, h.ISBN, h.izdatelstvo, Amax);
 
else printf("\n Таких книг нет в строке %d"); 
    }
}
fclose(f);
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].godvipuska;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
    _getch();
      return 0;
}
}
Добавлено через 22 часа 39 минут
Подскажите, мне почему у меня в проге данные не записываются в файл, хотя по структуре вроде все так, есле не сложно помогите исправить
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
134
135
136
137
138
139
140
141
142
#include "stdafx.h"
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
 
struct  BOOK
{
        char *name;
        char *avtor;
        char *tematika;
        int *godvipuska;
        char *ISBN;
        char *izdatelstvo;
};
 using namespace std;
const int Amax=255;
ostream& operator<<(ostream& out, BOOK &J)
 { 
         out<<"\n фамилия автора : "<<J.avtor;
         out<< "\n тематика книги : "<<J.tematika;
         out<<"\n год выпуска : "<<J.godvipuska;
         out<< "\n ISBN: "<<J.ISBN;
     out<<"\n издательство: "<<J.izdatelstvo;
         return out;
 }
int main()
{  
    setlocale (LC_ALL, "Russian");
    BOOK k[3],h;
    int i;
    FILE* f=fopen("katalogizator.txt","w+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
        { 
            printf ("введите название книги\t");
            k[i].name = new char [Amax];
            scanf("%s",k[i].name, Amax);
            
 
            printf ("введите фамилию автора\t");
            k[i].avtor = new char [Amax];
            scanf("%s",k[i].avtor, Amax);
 
 
            printf ("введите тематику книги\t");
            k[i].tematika = new char [Amax];
            scanf("%s",k[i].tematika, Amax);
 
 
            printf ("введите год выпуска книги\t");
            k[i].godvipuska = new int [Amax];
            scanf("%d",&k[i].godvipuska);
 
 
            printf ("введите ISBN книги\t");
            k[i].ISBN = new char [Amax];
            scanf("%s",k[i].ISBN, Amax);
 
 
            printf ("введите издательство книги\t");
            k[i].izdatelstvo = new char [Amax];
            scanf("%s",k[i].izdatelstvo, Amax);
 
 
            printf("\n");
        }
      fclose(f);
 
    f=fopen("katalogizator.txt","r+t");
    if (!f)
    {
        printf("Ошибка открытия файла");
        return 1;
    }
    for (i=0; i<3; i++)
    {
        fscanf (f, "%s %s %s %d %s %s \n", &k[i].name, &k[i].avtor, &k[i].tematika, &k[i].godvipuska, &k[i].ISBN, &k[i].izdatelstvo );
    }
      fclose(f);
for (i=0; i<3; i++)
      {
          printf("%s %s %s %d %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo, Amax);
          printf("\n");
      };
printf("введите название ключевого поля для поиска данных\t");
char *temp;
temp = new char [Amax];
scanf_s("%s", temp, Amax-1);
printf ("%s",temp);
int u=0;
f=fopen("katalogizator.txt","r+t");
{
h.avtor = new char [Amax];
h.godvipuska = new int;
h.ISBN = new char [Amax];
h.izdatelstvo = new char [Amax];
h.name = new char [Amax];
h.tematika = new char [Amax];
}
 while(!feof(f))
{
    printf("\ntest");
 fscanf(f, "%s %s %s %d %s %s \n", &h.name, &h.avtor, &h.tematika, &h.godvipuska, &h.ISBN, &h.izdatelstvo);
 
 if(strcmp(h.name,temp) == 0)
 {
    printf("\n Такая книга найдена в этой строке %s %s %s %d %s %s \n", &h.name, &h.avtor, &h.tematika, &h.godvipuska, &h.ISBN, &h.izdatelstvo, Amax);
    u++;
    break;
 }
  if (k==0) printf("\n Таких книг нет"); 
 }
 
fclose(f);
for (i=0; i<3; i++)
{
  delete[] k[i].avtor;
  delete[] k[i].ISBN;
  delete[] k[i].izdatelstvo;
  delete[] k[i].name;
  delete[] k[i].tematika;
}
{
delete[] h.avtor; 
delete[] h.godvipuska; 
delete[] h.ISBN;
delete[] h.izdatelstvo ;
delete[] h.name;
}
        _getch();
          return 0;
 
}
Yandex
Объявления
26.05.2010, 20:42     Поиск данных в файле по ключевому полю
Ответ Создать тему
Опции темы

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