Аватар для Luna17
3 / 2 / 1
Регистрация: 09.03.2010
Сообщений: 95

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

26.05.2010, 22:41. Показов 2804. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Компилируется прога хорошо, но почему то не вводимые слова не записываются в файл не понимаю что я не так сделала?
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;
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2010, 22:41
Ответы с готовыми решениями:

автоматическое увеличение полей при вводе даных
День добрый! Меня интересует такой вопрос, можно ли в Access организовать автоматическое увеличение поля при вводе в него текста. То есть...

Ошибка кодировки при вводе в файл
Добрый день. Подскажите, как можно решить проблему с неправильной кодировкой при вводе текста в файл (.txt). Пример ввода: раз два...

Ошибка при вводе данных в файл
Мне кажется, я что-то напутал с типом данных, но всё равно не получается найти и исправить ошибку. Посмотрите, пожалуйста.

22
 Аватар для Luna17
3 / 2 / 1
Регистрация: 09.03.2010
Сообщений: 95
27.05.2010, 04:18  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 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;
 
}
0
302 / 160 / 62
Регистрация: 27.02.2010
Сообщений: 317
27.05.2010, 13:02
Уж не знаю, почему, но у вас вроде как эта строчка
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;
 }
то он сделает вывод в файл
1
 Аватар для Luna17
3 / 2 / 1
Регистрация: 09.03.2010
Сообщений: 95
27.05.2010, 15:51  [ТС]
NNN777, большущие спасибо, я эту ошибку долго искала вчера не могла понять в чем дело, большое спс все работает))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2010, 15:51

При вводе имени файла пишет, что не может открыть файл. В чем ошибка?
Сделал ехе(https://www.cyberforum.ru/asm-beginners/thread1713166.html), убрал предупреждение, но почему-то exe при вводе имени файла пишет...

Ошибка при изменении таблицы в базе даных
при любом изменении выдается ошибка --- Error Type: Microsoft JET Database Engine (0x80004005) Operation must use an updateable...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt; &quot;Hello&quot; &lt;&lt; endl; } ...

Необходимо расшифровать введеный файл(ошибка в вводе)
не получается ввести переменную a:cin » a;- 11стр #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; #include...

Отправляем файл при вводе mail
Привет ребят. Спасибо что обратили внимание на мой вопрос. Есть служба https://smartresponder.ru/, которая создает базу mail`ов....


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

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

Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru