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

Ошибка при вводе даных в файл - C++

Восстановить пароль Регистрация
 
 
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
26.05.2010, 22:41     Ошибка при вводе даных в файл #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
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;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2010, 22:41     Ошибка при вводе даных в файл
Посмотрите здесь:

C++ Ошибка при вводе
Хэширование. Ошибка при вводе строки. C++
Ошибка при вводе матрицы. C++
Ошибка при вводе строки ! C++
ошибка при вводе елементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
27.05.2010, 04:18  [ТС]     Ошибка при вводе даных в файл #21
Цитата Сообщение от easybudda Посмотреть сообщение
Полностью согласен!
и как это сделать,
кст, у ми терь ток поиск не работает остальное вроде привела в норм вид
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
#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>
 
const int Amax=255;
struct  BOOK
{
        char name[Amax];
        char avtor[Amax];
        char tematika[Amax];
        char godvipuska[Amax];
        char ISBN[Amax];
        char izdatelstvo[Amax];
};
 using namespace std;
 
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");
                          gets(k[i].name);
                
                        printf ("введите фамилию автора\t");
                          gets(k[i].avtor);
 
                        printf ("введите тематику книги\t");
                          gets(k[i].tematika);
 
                        printf ("введите год выпуска книги\t");
                          gets(k[i].godvipuska);
 
                        printf ("введите ISBN книги\t");
                          gets(k[i].ISBN);
 
                        printf ("введите издательство книги\t");
                          gets(k[i].izdatelstvo);
                                         printf("\n");
                }
 
for(int i=0;i<3;i++)
{
    fprintf(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, Amax);
}
 
 
      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 %d %s %s ", k[i].name, k[i].avtor, k[i].tematika, k[i].godvipuska, k[i].ISBN, k[i].izdatelstvo);
          printf("\n");
      };
 
FILE *y=fopen("ooo.txt","w+t");
    if (!f)
        {
                printf("Ошибка открытия файла");
                return 1;
        }
printf("введите название ключевого поля для поиска данных\t");
 
char *temp;
temp = new char [Amax];
gets(temp);
fprintf(y,"%s",temp);
 fclose(y);
 
int u=0;
f=fopen("katalogizator.txt","r+t");
 y=fopen("ooo.txt","r+t");
 while(!feof(f))
{
       
       fscanf(f, "%s %s %s %s %s %s \n", &h.name, &h.avtor, &h.tematika, &h.godvipuska, &h.ISBN, &h.izdatelstvo, Amax);
 
 if(strcmp(h.name,temp) == 0)
 {
        fprintf(f,"\n Такая книга найдена в этой строке %s %s %s %s %s %s \n", &h.name, &h.avtor, &h.tematika, &h.godvipuska, &h.ISBN, &h.izdatelstvo, Amax);
        u++;
        break;
 }
  if (k==0) printf("\n Таких книг нет"); 
 }
 fclose(y);
fclose(f);
 delete[] temp;
 _getch;
          return 0;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
27.05.2010, 13:02     Ошибка при вводе даных в файл #22
Уж не знаю, почему, но у вас вроде как эта строчка
C++
1
f=fopen("katalogizator.txt","r+t");
работает только на чтание. если переписать if вот так
C++
1
2
3
4
5
6
7
8
 if(strcmp(h.name,temp) == 0)
 {
    fclose (f);
    f=fopen("katalogizator.txt","a+t");
    fprintf(f, "\n Такая книга найдена в этой строке %s %s %s %s %s %s \n", &h.name, &h.avtor, &h.tematika, &h.godvipuska, &h.ISBN, &h.izdatelstvo, Amax);
    u++;
    break;
 }
то он сделает вывод в файл
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2010, 15:51     Ошибка при вводе даных в файл
Еще ссылки по теме:

C++ Ошибка при вводе многомерного массива
C++ Ошибка при вводе числа
Непонятная ошибка при вводе C++

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

Или воспользуйтесь поиском по форуму:
Luna17
 Аватар для Luna17
3 / 3 / 1
Регистрация: 09.03.2010
Сообщений: 95
27.05.2010, 15:51  [ТС]     Ошибка при вводе даных в файл #23
NNN777, большущие спасибо, я эту ошибку долго искала вчера не могла понять в чем дело, большое спс все работает))))
Yandex
Объявления
27.05.2010, 15:51     Ошибка при вводе даных в файл
Ответ Создать тему
Опции темы

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