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

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

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

Програма с .тхт файлом - C++

08.05.2009, 01:45. Просмотров 869. Ответов 5
Метки нет (Все метки)

вот код
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include <windows.h>
#include <stdio.h>
#include <conio.h>
 
 
FILE *f;
typedef struct tagINFO
{
    char nam[64];
    char fam[64];
    char grp[64];
    int  iID;
    int  year;
}INFO;
 
void p1();
void p2();
void p3();
 
int ftrunc(FILE *f, int bgn, int end);
 
int main()
{
    int bContinue;
    printf("\t\tMenu\r\n");
    printf("1 - Write data in file\r\n");
    printf("2 - Read  data from file\r\n");
    printf("3 - Delete data in file\r\n");
    printf("Any symbol for exit\r\n");
    printf("Note - DataBase must be in the same dirrectory\r\n");
    printf("that program and has name DataBase.txt\r\n");
    switch(getch())
    {
        case 49:p1();break;
        case 50:p2();break;
        case 51:p3();break;
        default:
            bContinue = 0;
            break;
    }
   return 0;
      }
        if (bContinue)
            main();
}
 
void p1();
{
    INFO pINFO;
    int bContinue = 1;
    printf("tWriting data\r\n");
    if(!(f = fopen("DataBase.txt","rb+")))
    {
        if(!(f = fopen("DataBase.txt","wb+")))
            bContinue = 0;
    }
    while(bContinue)
    {
        fseek(f,0,SEEK_END);
        printf("Name  \t:");scanf("%s",&pINFO.nam);
        printf("Family\t:");scanf("%s",&pINFO.fam);
        printf("Group \t:");scanf("%s",&pINFO.grp);
        printf("ID    \t:");scanf("%d",&pINFO.iID);
        printf("Year  \t:");scanf("%d",&pINFO.year);
        fwrite(&pINFO,1,sizeof(pINFO),f);
        printf("Writing complete,1 - add more\r\n");
        if(getch() != 49)
            bContinue = 0;
    }
    fclose(f);
 
}
 
void p2()
{
    INFO pINFO;
    int bContinue = 1;
    int nCount = -1,num;
    if((f = fopen("DataBase.txt","rb+")))
    {
        fseek(f,0,SEEK_END);
        nCount = ftell(f) / sizeof(pINFO);
        fseek(f,0,SEEK_SET);
        if(0 < nCount)
        {
            while(bContinue)
            {
                printf("Nomer zapisi ot 1 do %d\r\n",nCount);
                scanf("%d",&num);
                if(num <= nCount)
                {
                    fseek(f,(num - 1)*sizeof(pINFO),SEEK_SET);
                    fread(&pINFO,1,sizeof(pINFO),f);
                    printf("Name  \t: %s\r\n",pINFO.nam);
                    printf("Family\t: %s\r\n",pINFO.fam);
                    printf("Group \t: %s\r\n",pINFO.grp);
                    printf("ID    \t: %d\r\n",pINFO.iID);
                    printf("Year  \t: %d\r\n",pINFO.year);
                }
                printf("Reading complete,1 - see more\r\n");
                if(getch() != 49)
                    bContinue = 0;
            }
        }
        else
            printf("Basa dannih povrezhdena ili otsytstvyut zapisi\r\n");
    }
    fclose(f);
}
 
void p3()
{
    int bContinue = 1;
    int nCount = -1,num;
 
    if((f = fopen("DataBase.txt","rb+")))
    {
        fseek(f,0,SEEK_END);
        nCount = ftell(f) / sizeof(INFO);
        fseek(f,0,SEEK_SET);
        if(0 < nCount)
        {
            while(bContinue)
            {
                printf("Nomer zapisi ot 1 do %d\r\n",nCount);
                scanf("%d",&num);
                if(num <= nCount)
                {
                    if(ftrunc(f, num*sizeof(INFO), (num + 1)*sizeof(INFO)))
                        nCount--;
                    fseek(f,0,SEEK_END);
                }
                printf("Deleting complete,1 - see more\r\n");
                if(getch() != 49)
                    bContinue = 0;
            }
        }
        else
            printf("Basa dannih povrezhdena ili otsytstvyut zapisi\r\n");
    }
    fclose(f);
}
 
bool ftrunc(FILE *f, int bgn, int end)
{
    bool RetVal = false;
    fseek(f,0,SEEK_END);
    int fLen = ftell(f);
    fseek(f,0,SEEK_SET);
 
    void *lBuf = malloc(bgn);
    if(fLen - end < 0)
        end = fLen;
    void *rBuf = malloc(fLen - end);
 
    fread(lBuf,1,bgn,f);
    fseek(f,end,SEEK_SET);
    fread(rBuf,1,fLen - end,f);
    fseek(f,bgn,SEEK_SET);
    if(RetVal = SetEndOfFile((HANDLE)f))
        fwrite(rBuf,1,fLen - end,f);
    return RetVal;
}
Мне тут помогали с прогой. Но когда компилю, вылетают ошибоки.
Непонимаю почему но тип bool вообще никак не хочет воспринимать, даже help-index не имеет такого. Да у меня с++ старый консольный режим или досовский...
Я заменил bool на int и брал значения 0 -false 1 -true...
чет я не понимаю де указывается путь, где должен создаваться файл..

if (bContinue)
main(); что тут неправельного?

if((f = fopen("DataBase.txt","rb+"))) тут пишет чет не то
bool ftrunc(FILE *f, int bgn, int end) аналогично ругается
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2009, 01:45     Програма с .тхт файлом
Посмотрите здесь:

Сохранение информации в ТХТ - C++
Подскажите как сделать что бы введенная информация сохранялась в файл? #include&lt;string.h&gt; #include&lt;iostream&gt; #include &lt;fstream&gt;...

Чтение файла ТХТ С++ - C++
Здравствуйте у меня есть проблема с чтением файла файл input.txt нужно считывать так по группам если в первой строке есть у меня 2...

Чтение и Запись в файл тхт - C++
Привет народ. Вот я научился сохранять и открывать файлы через Опен и Сейв диалог. Но вот как например мне сохранить строку типа чар в...

Запись в файл тхт из мемо - C++
Срочно товарищи!!!! помогите! Нужно из memo записывать текст в файл тхт(название которого ты сам вводишь в edit). И чтобы при повторной...

Записать числа из ТХТ файла в массив - C++
Добрый день. такая проблема. есть файл ТХТ в котором записаны два столбца значвений в виде 1.9316500000 0.153104081 ...

Как интегрировать тхт-файлы в программу? - C++
Есть консольная программа. Она читает данные из четырех текстовых файлов. Можно ли как-то эти четыре файла интегрировать в программу или...

Считывание данных из файла.тхт в массив - C++
доброго времени суток. я новичок и поставлена одна задача(скорее игровая). у меня есть текстовый файл в котором первая строка содержит...

видео в n-мерный массив и последущее сохраниние массива в ТХТ - C++
Помогите сделать алгоритм который считывает видео(avi) и сохраняет его в n-мерный массив, выводит массив в ТХТ. а также обратную развёртку...

Выводит из файла.тхт последние данные два раза - C++
product(std::ifstream&amp; fin) { fin&gt;&gt;Name; fin&gt;&gt;Belok; fin&gt;&gt;Gur; fin&gt;&gt;Yglevod; fin&gt;&gt;Kkal; ...

В code blocs тхт файлы открываются отделно на блокноте - C++
Ну я открыл коде блокс и открыл вводные файлы input.txt и output.txt и случайно закрыл output и потом закидал на коде блокс мышкой и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
08.05.2009, 02:04     Програма с .тхт файлом #2
C
1
2
        if (bContinue)
                main();
здесь неправильно то, что главная функция вызывается. Причем сама из себя.
if((f = fopen("DataBase.txt","rb+"))) тут пишет чет не то
Ёпрст. "пишет чет не то". Уже лень написать, что за сообщение выдает компилятор? Пиши.
Live
0 / 0 / 0
Регистрация: 01.03.2009
Сообщений: 69
08.05.2009, 02:53  [ТС]     Програма с .тхт файлом #3
пишет possibly incorrect assignment...
не лень просто я подумал что люди код компилить будут и там уже увидят...
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
08.05.2009, 03:09     Програма с .тхт файлом #4

Не по теме:

Кто-то будет, кто-то нет. А если человек с телефона сидит? А с чужого компа, где компилера нет? А, если ему будет просто лень тратить свое время, чтобы это сделать? И уж точно кто-то сможет быстрее увидеть ошибку даже не смотря на код и никуда его не записывая, верно? Нужно думать о людях Ну еще можно было сам код, в котором ошибка, написать просто номером строки. Номера строк, все-таки, не просто так


Забавное, конечно, сообщение. Насколько я знаю, это не ошибка, а warning, поэтому у тебя прога должна компилиться (код не смотрел, может, там еще что есть). Попробуй убрать такую проверку, как у тебя сейчас, а сделать отдельно проверку f на NULL.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.05.2009, 11:37     Програма с .тхт файлом #5
Код
48   void p1()[B][COLOR="Red"];[/COLOR][/B]
49   {
Код
21   int ftrunc(FILE *f, int bgn, int end);
.....
145   bool ftrunc(FILE *f, int bgn, int end)
Если в прототипе тип функции int, то и в описании должен быть int.
Еще вот это не понял
Код
53   if(!(f = fopen("DataBase.txt","rb+")))
54           {
55                   if(!(f = fopen("DataBase.txt","wb+")))
56                           bContinue = 0;
57           }
Нафига два раза один файл открывать?
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
16.05.2009, 02:39     Програма с .тхт файлом #6
Я заменил bool на int и брал значения 0 -false 1 -true...
в <windows.h> определен тип
C++
1
2
3
#define BOOL int
#define TRUE 1
#define FALSE 0
C++
1
2
3
4
5
        if(!(f = fopen("DataBase.txt","rb+")))
        {
                if(!(f = fopen("DataBase.txt","wb+")))
                        bContinue = 0;
        }
в файл пишут, а пытаются открыть для чтения
Yandex
Объявления
16.05.2009, 02:39     Програма с .тхт файлом
Ответ Создать тему
Опции темы

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