Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 17.12.2015
Сообщений: 51

Fseek и структуры

13.06.2016, 16:40. Показов 1090. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,не могу разобраться с fseek в структурах / Нужно сделать запрос (zapros()) n-ой записи через fseek и вывести ее ,либо изменить ,выдается ошибка
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
#include <iostream>
using namespace std;
#include <stdio.h>
 
int input()
{   setlocale(LC_ALL, "Russian");
int i;
struct stud {int shifr;char name[30];char diplom[5];}t1[10];
    FILE *f=fopen("1.txt","wb");
    for(i=0;i<2;i++)
    {
    cout<<endl<<"шифр группы=  ";scanf("%d",&t1[i].shifr);
    cout<<"Имя=  ";scanf("%s",&t1[i].name);
    cout<<"Наличие красного диплома=Yes/not=";scanf("%s",&t1[i].diplom);
    fprintf(f," \n %d \n %s \n %s",t1[i].shifr,t1[i].name,t1[i].diplom);
    }
    fclose(f);
    return 0;
}
int vivod ()
{
    int i,k=1;
    FILE *f=fopen("1.txt","rb+");
    struct stud {int shifr;char name[30];char diplom[5];}t1[10];
    for(i=0;i<40;i++) cout<<"*";cout<<endl;
    cout<<"            Вуз                        |"<<endl;
    for(i=0;i<40;i++) cout<<"*";cout<<endl;
    cout<<"№ | Группа | Имя     |Красный диплом   |"<<endl;
    for (i=0;i<40;i++) cout<<"_";cout<<endl;
    //while (!feof(f))
    for(i=0;i<2;i++)
    {
fscanf(f,"%d %s %s",&t1[i].shifr,&t1[i].name,&t1[i].diplom);
printf("%d |%d    |%s     |     %s         |\n",k++,t1[i].shifr,t1[i].name,t1[i].diplom);
    }
    for(i=0;i<40;i++) cout<<"*";cout<<endl;
    int c=0,dp=0,r=1;
    FILE *nf=fopen("2.txt","wb");
    cout<<endl<<"К/Дипломники:"<<endl;
    k=1;
//while (!feof(f))
for(i=0;i<10;i++)
{
if (strcmp(t1[i].diplom,"yes")==0)
{
fprintf(nf," %d %s %s \n",t1[i].shifr,t1[i].name,t1[i].diplom);
printf(" %d %d \%s %s \n ",k++,t1[i].shifr,t1[i].name,t1[i].diplom);c++;dp++;
}
else {k++;c++;}
}
    cout<<"Всего студентов="<<c<<endl;
    cout<<"Красных дипломников="<<dp<<endl;
    //fprintf(f,"\n Всего = %d",k-1);
    //fprintf(f,"\n Всего красных = %d",dp);
    fclose(f);
    fclose(nf);
    return 0;
}
int dopoln()
{   setlocale(LC_ALL, "Russian");
int i,r;
struct stud {int shifr;char name[30];char diplom[5];}t1[10];
    FILE *f=fopen("1.txt","ab");
    cout<<"Новых записей";cin>>r;
    for(i=0;i<r;i++)
    {
    cout<<endl<<"шифр группы=  ";scanf("%d",&t1[i].shifr);
    cout<<"Имя=  ";scanf("%s",&t1[i].name);
    cout<<"Наличие красного диплома=Yes/not=";scanf("%s",&t1[i].diplom);
    fprintf(f," \n %d  %s  %s",t1[i].shifr,t1[i].name,t1[i].diplom);
    //fwrite (&t1, sizeof (t1), 1, f);  
    }
    fclose(f);
    return 0;
}
int zapros()
{
     setlocale(LC_ALL, "Russian");
int i,r,nom;
struct stud {int shifr;char name[30];char diplom[5];}t1[10];
    FILE *f=fopen("1.txt","r+b");
    fseek(f,0,SEEK_END);
    //r=ftell(f)/sizeof(t1[10]);
    while (1)
    {
        cout<<"Noмер записи = ";
        cin>>nom;
        fseek(f,nom*sizeof(t1),SEEK_SET);   
        fscanf(f,"  %d  %s  %s",&t1[i].shifr,&t1[i].name,&t1[i].diplom);
        printf("  %d  %s  %s",t1[i].shifr,t1[i].name,t1[i].diplom);
    }   
    fclose(f);
    system("pause");
    return 0;
}
int main ()
{
int nm;
setlocale(LC_ALL, "Russian");
while (1)
{
    cout<<"1.Ввод информаци"<<endl;
    cout<<"2.Вывод сведений и обработка"<<endl;
    cout<<"3.Дополнение"<<endl;
    cout<<"4.Выход"<<endl;
    cout<<"Введите номер"<<endl;cin>>nm;
    switch(nm)
{
         case 1: input();break;
        case 2 :vivod();break;
        case 3 :dopoln();break;
        case 4 : return 0;
            case 5: zapros();break;
        default : cout<<"Неверно"<<endl;
}
}
system("pause");
return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int zapros()
{
     setlocale(LC_ALL, "Russian");
int i,r,nom;
struct stud {int shifr;char name[30];char diplom[5];}t1[10];
    FILE *f=fopen("1.txt","r+b");
    fseek(f,0,SEEK_END);
    //r=ftell(f)/sizeof(t1[10]);
    while (1)
    {
        cout<<"Noмер записи = ";
        cin>>nom;
        fseek(f,nom*sizeof(t1),SEEK_SET);   
        fscanf(f,"  %d  %s  %s",&t1[i].shifr,&t1[i].name,&t1[i].diplom);
        printf("  %d  %s  %s",t1[i].shifr,t1[i].name,t1[i].diplom);
    }   
    fclose(f);
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2016, 16:40
Ответы с готовыми решениями:

Fseek
Я пытаюсь записать цифру в файл: fseek(f, sizeof(double)*3, 0); fwrite(buffer, 1, sizeof(double), f); 1) в буфере лежит цифра 2,...

fseek
&lt;?php $file = &quot;./666.txt&quot;; if(!($dpr = fopen($file, &quot;r&quot;))) die (&quot;Невозможно открыть файл $file.&quot;); while(!feof($fp)){ ...

Функция fseek()
Приведите пример использования функции fseek на языке C

2
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.06.2016, 19:54
У тебя файл записывается как текстовый, поэтом fseek() не поможет. Сначала запись сделай как положено, через fwrite().
И зачем в каждой функции описана одна и та же структура? Один раз она описывается над всеми функциями и setlocale() вызывается один раз в начала main().
0
0 / 0 / 0
Регистрация: 17.12.2015
Сообщений: 51
14.06.2016, 00:14  [ТС]
nmcf, да ,я изменил на fwrite() fread() и заработало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2016, 00:14
Помогаю со студенческими работами здесь

fseek вылетает
#include &lt;stdio.h&gt; #include &lt;windows.h&gt; char *filename; long size; File *in; char *infile; int main(int argc, char *argv) { ...

Функция fseek
Помогите написать код ,который демонстрирует работу функции fseek

fseek для ab
Нигде не могу найти работает ли fseek для режима ab??? или у аb статически указатель стоит в конце файла? мне нужно в середину файла...

Функция fseek
Здраствуйте! Пишу сейчас телефонную книгу. Точнее что-то наподобие этого. Появилась проблема. Мне необходимо из файла, в который раннее...

fseek / fread
Всем привет! Такой вопрос возник. Есть строка, состоящая из нескольких &quot;записей&quot; в файле (буквы + числа). Нужно с помощью функций...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru