Разработка и реализация на языке С/С++ информационно-поискового справочника «Фоторезисторы», страница 6

                      exit( 1 );

               return;

    }

    else

    {

               puts("Данные успешно записаны.");

               getchar();

    }

    if( otkr[0] != '\0' && a >= 0 )

        argv[1] = '\0';

       fclose( out );

}     

12) Файл «sohranenie.c».

// Заголовочный файл

#include "foto.h"

void sohranenie( struct foto arr[], int i, char *argv[] )

{

    // Перемнные и файловый указатель

    char a;          

    char sohr[DLINA] = "\0";

    FILE *in;        

    int x = 0;

    system("clear");

    if( i >= 0 && argv[1] == '\0' )

    {

           puts("Введите и мя файла для сохранения.");

           while( getchar() != '\n' )  continue;

           fgets( sohr, DLINA, stdin );

           /* Проверка ввода некорректных значений */

           while( sohr[0] == '\n' || sohr[0] == ' ' )

          {

                      puts("Ошибка при вводе имени файла.");

                      fgets( sohr, DLINA, stdin );

           }

    sohr[strlen( sohr ) - 1] = '\0';

           argv[1] = sohr;

    }

    // Открытие файла

    if( ( in = fopen( argv[1], "wb" ) ) == NULL )

    {

              fprintf(stderr, "Произошка ошибка при открытии указанного файла.\n");

              fprintf(stderr, "\'Q\' –выход из приложения.\t\'Enter\' - возврат.\n");       

a = getchar();

               if( a == 'q' || a == 'Q' )

                      exit( 1 );

               return;

    }

    // Запись в файл

    if( fwrite( arr, sizeof( struct foto ), podschet( arr ), in ) != podschet( arr ) )

    {

              fprintf(stderr, "Произошка ошибка при записи указанного файла.\n");

              fprintf(stderr, "\'Q\' –выход из приложения.\t\'Enter\' - возврат.\n");       

              while( getchar() != '\n' )  continue;

              a = getchar();

               if( a == 'q' || a == 'Q' )

                      exit( 1 );

               return;

    }

    else

    {

               puts("Данные успешно записаны.");

               getchar();

    }

    if( sohr[0] != '\0' && a >= 0 )

        argv[1] = '\0';

       fclose( in );

}

13) Файл «podschet.c».

// Заголовочный файл

#include "foto.h"

/* Функция для подсчёта записей */

int podschet( struct foto arr[] )

{

    int x, y = 0;

    system("clear");   

    for( x = 0; x < CHISLO; x++ )

        if( arr[x].marka[0] != '\0' )

            y++;

    if( y == 0 )

    {

        puts("Справочник пуст.");

        getchar();

    }

    return y;

}

14) Утилита «Makefile»

foto: main.o chisl_menu.o chtenie.o menu_zapis.o podschet.o sohranenie.o sort_puz.o sort_vib.o sort_vst.o udalenie.o vivod_vseh.o vivod_zapisi.o vvod_zapisey.o

        gcc main.o chisl_menu.o chtenie.o menu_zapis.o podschet.o sohranenie.o sort_puz.o sort_vib.o sort_vst.o udalenie.o vivod_vseh.o vivod_zapisi.o vvod_zapisey.o -o magn

main.o: main.c foto.h

        gcc -c main.c

chisl_menu.o: chisl_menu.c foto.h

        gcc -c chisl_menu.c

chtenie.o: chtenie.c foto.h

        gcc -c chtenie.c

menu_zapisi.o: menu_zapisi.c foto.h

        gcc -c menu_zapisi.c

podschet.o: podschet.c foto.h

        gcc -c podschet.c

sohranenie.o: sohranenie.c foto.h

        gcc -c sohranenie.c

sort_puz.o: sort_puz.c foto.h

        gcc -c sort_puz.c

sort_vib.o: sort_vib.c foto.h

        gcc -c sort_vib.c

sort_vst.o: sort_vst.c foto.h

        gcc -c sort_vst.c

udalenie.o: udalenie.c foto.h

        gcc -c udalenie.c

vivod_vseh.o: vivod_vseh.c foto.h

        gcc -c vivod_vseh.c

vivod_zapisi.o: vivod_zapisi.c foto.h

        gcc -c vivod_zapisi.c

vvod_zapisey.o: vvod_zapisey.c foto.h

        gcc -c vvod_zapisey.c