Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 29
1

Неожиданный консольный вывод в задании на поиск в массиве структур по заданному полю (файловый ввод/вывод)

03.03.2016, 15:16. Показов 602. Ответов 4
Метки нет (Все метки)

Подскажите, почему программа не работает? Только вот это сообщение выходит: Process exited after 0.004866 seconds with return value 0?
Вот код программы:

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
#include <stdio.h>
#include <conio.h>
 
void clrscr( )
{
    int i;
    for( i = 0; i < 25; i++ ) putchar( '\n' );
}
 
struct sport
{
    char name[10];
    char pol[5];
    char god[10];
    float r;
} t1;
 
void input( FILE * ); 
void print( FILE * ); 
void app( FILE * ); 
void max_height( ); 
 
int main( int argc, char * argv[] )
{
    char c;
    int i;
    FILE * tf;
 
    while( i != 0 )
    {
        clrscr();
        puts( "  1 - new file\n"
              "  2 - look file\n"
              "  3 - dobavlenie v file\n"
              "  4 - find max height\n"
              "  0 - vihod" );
        c = getch();
        switch( c )
        {
        case '1':
            input( tf );
            break;
        case '2':
            print( tf );
            break;
        case '3':
            app( tf );
            break;
        case '4':
            max_height( );
            break;
        case '0':
            return 0;
        default :
            puts( "neverni rezgim" );
        }
    }
}
 
void input( FILE * tf )
{   char ch;
    tf = fopen( "file1.dat", "wb" ); 
    clrscr();
    printf( "\n Vvod dannih \n" );
 
    do
    {   printf( "\n familiya: " );
        scanf( "%s", t1.name );
        printf( " pol: " );
        scanf( "%s", &t1.pol );
        printf( " god rozgdeniya: " );
        scanf( "%s", &t1.god );
        printf( " rost: " );
        scanf( "%f", &t1.r );
        fwrite( &t1, sizeof( t1 ), 1, tf ); 
        printf( "\n Zakonchit?  y/n  " );
        ch = getch();
    }   while( ch != 'y' );
 
    fclose( tf );
}
 
void print( FILE * tf )
{
    int i;
    clrscr();
    tf = fopen( "file1.dat", "rb" ); 
    i = 1;
    fread( &t1, sizeof( t1 ), 1, tf ); 
 
    while( !feof( tf ) )
    {
        printf( "\n  %3d familya %10s pol %5s god %5s rost %6.2f", i, t1.name, t1.pol, t1.god, t1.r );
        fread( &t1, sizeof( t1 ), 1, tf );
        i++;
    }
 
    getch();
}
 
void app( FILE * tf )
{   char ch;
    tf = fopen( "file1.dat", "ab" ); 
    clrscr();
    printf( "\n  Vvod dannih \n" );
 
    do
    {   printf( "\n familiya: " );
        scanf( "%s", t1.name );
        printf( " pol: " );
        scanf( "%s", &t1.pol );
        printf( " god rojdenia: " );
        scanf( "%s", &t1.god );
        printf( " rost: " );
        scanf( "%f", &t1.r );
        fwrite( &t1, sizeof( t1 ), 1, tf );
        printf( " zakonchit  y/n " );
        ch = getch();
    }
    while( ch != 'y' );
 
    fclose( tf );
}
 
void max_height( )
{
    clrscr();
 
    FILE * fd = fopen( "file1.dat", "rb" );
 
    if( !fd )
       return;
 
    struct sport temp_buff,
                 max;
 
    max.r = 0;
 
    while( fread( &temp_buff, sizeof( struct sport ), 1, fd ) )
    {
        if( temp_buff.r > max.r )
           max = temp_buff;
    }
 
    fclose( fd );
 
    printf( "%s %s %s %6.2f\n", max.name, max.pol, max.god, max.r );
    getch();
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2016, 15:16
Ответы с готовыми решениями:

Ввод, вывод массива структур, поиск по заданному пользователем полю
Здравствуйте. Необходимо написать 3 функции. Ввод, вывод массива структур, поиск по заданному...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод)
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список...

Реализовать поиск в массиве структур "Student" по заданному полю (файловый ввод/вывод)
Помогите написать программы... 1. Пусть на диске текстовый файл ' Hrupa.txt ' , каждая строка...

Реализовать функцию поиска по заданному полю в массиве структур (файловый ввод/вывод)
Имеется информация о клиентах телефонной компании и предоставляемых им услугах. Каждая услуга имеет...

4
Jesus loves me
Эксперт С++
5191 / 3158 / 356
Регистрация: 12.12.2009
Сообщений: 7,985
Записей в блоге: 2
03.03.2016, 15:20 2
Цитата Сообщение от Julia1994 Посмотреть сообщение
Только вот это сообщение выходит: Process exited after 0.004866 seconds with return value 0?
Программа работает и успешно завершается. Что не так?
0
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 29
03.03.2016, 15:38  [ТС] 3
Вот задание: Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, выполнить задание.
Структура имеет вид: фамилия, пол, год рождения и рост. Вывести данные о самом высоком спортсмене.
Почему тогда выходит это сообщение?
0
888 / 805 / 273
Регистрация: 27.07.2012
Сообщений: 2,265
03.03.2016, 15:42 4
while( i != 0 ) замени на while( true )
1
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 29
03.03.2016, 15:44  [ТС] 5
Спасибо огромное! Очень помогли!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2016, 15:44

Реализовать сортировку и поиск по заданному полю в массиве пользовательского типа (файловый ввод/вывод)
Подскажите, как реализовать часть задания, которая выделена красным цветом. Построить иерархию...

Поиск в массиве объектов типа "Student" по заданному полю (файловый ввод/вывод)
Здравствуйте. Стоит такая задача: Создать структуру «студент» со следующими данными: фамилия, имя,...

Поиск в массиве объектов типа "Student" по заданному полю (файловый ввод/вывод)
Помогите написать программу 1. Файл содержит итоги контрольного срока, каждая запись которого...

Реализовать поиск по заданному полю в массиве структур и вывод этих данных на консоль
Здравствуйте, пишу код чтобы я вводил какой-либо товар, отмечал какого года он был продан и сколько...


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

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

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