«С++ тілінде программалау» пәні бойынша

Автор: Пользователь скрыл имя, 22 Декабря 2011 в 21:29, курсовая работа

Описание работы

С++ тілінде ішкі файлдың аналогы болып ағын саналады. С++ де ағынға тип сәйкестендірілмейді. Ағын- енгізу,шығару процесінде берілетін байттық тізбек. Ағын қандай да бір сыртқы құрылғымен немесе дискідегі файлмен байланысты болу керек. С++ терминологиясында ол былайша айтылады: ағын қандайда бір құрылғыға немесе файлға бағытталуы қажет.
Курстық жұмыстың тақырыбы өте ауқымды болып келеді. Курстық жұмысты жазу барысында келесідей негізгі файлдарды ашу және жабу, файлдармен жұмысты ұйымдастыру, файлда форматты енгізу, шығару, символдарды енгізу, файлдың атын өзгерту тақырыптары қозғалмақшы.

Содержание

Кіріспе.......................................................................................................................3
1.Файлдармен жұмысты ұйымдастыру
1.1 Дискідегі файлмен жұмыс ...........................................................................4
1.2 Файлмен форматтық алмастыру.................................................................5
1. 3 FILE құрылымының көмегімен файлдармен жұмыс жасау........................6
2. С++ тілінде файлдармен жұмыс
2.1 Файлдармен жұмыс жасауға арналған функциялар…....…………….........10
2.2 Файлдағы символдармен жұмыс..... ..............................................................14
2.3 Файлдар және ағымдар...................................................................................16
2.4 Мәліметтер блогын жазу және оқу................................................................18
Қорытынды......................................................................................................20
Қолданылған әдебиеттер..........................................

Работа содержит 3 файла

C++ Файлдармен ж?мыс.doc

— 173.50 Кб (Скачать)

    Attr| =faDirectory;

    Attr| =faArchive;

    Attr| =faAnyFile;

    AnsiString DirName= GetCurrentDir( )+”\\*.*;

    Memo1-> Lines->Add (Dir Name);

    if (FindFirst (Dir Name, Attr, sr)==0)

    {

    do

    {

    Memo1-> Lines->Add (sr.Name “ “+intToStr (sr.Size));

    }

    while (FindNext (sr)==0);

    FindClose (sr);

    }

    } 
 
 
 

    Аты берілген файлды іздеу үшін келесі функциялар қолданылады:

  • bool FileExists (const AnsiString File Name); -егер аты берілген файл бар болса,  true қайтарылады.
  • AnsiString File Search (const AnsiString Name, const AnsiString DirList); -файлды екінші параметрде берілген каталогтар тізімінен іздейді. Егер файл бар болса, онда файлға толық жол қайтарылады. Егер файл жоқ болса, онда бос жол қайтарылады.

    Edit1-де  аты берілген файлды ағымдық  каталогтан іздеудің мысалы.

    void_ _fastcall Tform1:::Button1Click (TObject*Sender)

    {

    //ағымдық каталогқа жолды оқимыз

    AnsiString Dir Name= GetCurrentDir ( );

    // Edit1-де аты берілген файлды іздейміз

    AnsiString File Name= FileSearch (Edit1->Text, Dir Name);

    If (File Name.IsEmpty ( ))

    ShowMessage (AnsiString (“Файл табылған жоқ“)+Edit1->Text);

    else

    ShowMessage (AnsiString (“Файл табылды“)+File Name);

    } 

    С++ Builder-мен жұмыс істегенде ақпаратты шығарудың ең қарапайым нұсқасы –компоненттің SaveToFile әдісімен жұмыс жасау. 

  • Rich Edit1-> Lines-> SaveToFile (“myfile.txt”);
  • Memo1-> Lines-> SaveToFile (“myfile.txt”);
  • LisrBox1->Items-> SaveToFile (“myfile.txt”);
  • ComboBox1->Items-> SaveToFile (“myfile.txt”);
 

    Келесі  компоненттердің файлдағы жолдардың  элементтеріне арналған LoadFromToFile әдісі бар: 

  • Rich Edit1-> Lines-> LoadFromFile (“myfile.txt”);
  • Memo1-> Lines LoadFromFile (“myfile.txt”);
  • LisrBox1->Items-> LoadFromFile (“myfile.txt”);
  • ComboBox1->Items-> LoadFromFile (“myfile.txt”);
 
 
 
 
 
 
 
 
 
    1.  Файлдағы символдармен жұмыс

      Таңбаны енгізу үшін Си тілінде үш функция бар: getc ( ) және ( ) жалғыз таңбаларды білдіреді, ал fgetc ( ) болса таңбалардың жолдарын білдіреді. Getc ( ) және fgetc ( ) функциялары бір-бірімен ұқсасболып келеді. Getc ( ) функциясының прототипі stdio.h файлында келтірілген:

      int getc (FILE *fp);

fp аргументі  – бұл енгізу ағымына көрсеткіш,  файлды ашу кезінде fopen () функциясынан  қайтарылған.Функция енгізілген  символды немесе EOF – қате болған  жағдайда қайтарады.

getc ( ) функциясы  клавиатурадағы символдарды енгізеді.

fgetc ( ) функциясы- файлдардан таңбалардың жолдарын оқу үшін fgetc () функциясы қолданылды: char fgetc (char * str, int n, PILE fp);fgetc ( ) функциясы толық бір жолды енгізе бермейді.Str аргументі – буфер көрсеткішін ұсынады,енгізілген жолды ұсынады; n –максималды сандар символы, fp – FILE структурасына көрсеткіш, файлды ашу кезінде fopen ( ) функциясынан қайтарылған.

      Символды  шығару функцияларының бірнеше түрлері  бар атап айтсақ: putc ( ), fputc ( ), puts ( ), fputs ( ).

Putc ( ) және fputc ( ) фунциялары. Кітапханалық  функциясы бірлік символда берілген шығару ағынды жазады. stdio.h  берілген файлында  putc ( )  функциясының келесі прототипі мынадай:  int putc( int  ch, FILE *fp);  ch  дәлелін – шығару үшін бағытталған таңба. Ол формальды түрде  int типі бар, бірақ оның кіші байты шығару символында өзге функцияларда да қолданылады. fp дәлелі – файлмен ассоциацияланған ағын көрсеткіші. putc ( ) функциясы шығарылған символды және EOF функциясын қайтарады. EOF символдық тұрақты stdio.h  файлында анықталып және  бір мағыналы болады.           

      fputc ( ) фунциясы.Файлға символдардың  жол жазуына арналған fputc  (), кітапханалық функциясы қолданылады. Ол putc () функциясымен ұқсас. Бірақ бір айырмашылығы бар ол fputc ( ) үшін шығу ағының міндетті түрде көрсету керек.  stdio.h  файлында берілген прототипі мынадай:

                             char fputs( char *str, FILE* fp);

        Нолдік символымен аяқталатын str дәлелі жолдық көрсеткішті шығарады, ал fp – FILE құрылымына көрсеткіш, файлды ашу кезінде fopen ( ) файлдардан қайтарылады. Str жолы файлға жазылады.

        Rename ( ) бұл функция дисктте бар файлдың атын өзгерту үшін пайдалынады. stdio.h  файлында тұрған прототиптері мынадай:

         int  rename (const char * old name, const char * newname);

        Бұрынғы файл атына қойылған талаптарға сәйкес oldname және newname аргументтерін қанағаттандыру керек. Тағы да бір шектеу мынадан тұрады: ол екі бірдей атау дәл бір сол компьютердің логикалық дискісіне жіберілуі тиіс. Бұл тәсілмен файлдың атын өзгертуге және басқа дискіге көшіруге болмайды.

         Rename ( ) функциясы ия болғанда 0 жағдайына оралады немесе жоқ болғанда –1 мәнін қабылдайды.

       Қателер төмендегідей себептер бойынша шақырылуы мүмкін:

  • Оldname атымен берілген файл болмайды.
  • Newname атымен берілген файл бар.
  • Файлдың атын өзгерту және оны басқа дискіге көшіру.

     Rename ( ) функциясының қолданылуы мына  қосымшада көрсетілген.

Келесі  программада дискідегі файлдың  атын өзгерту үшін rename ( ) функциясы қолданылады.

 / * rename ( ) функциясы арқылы файлдың атын өзгерту. * /

  # include < stdio.h>

int main ( void)

  {

char oldname [80], newname [80];

printf (" Enter current filename:");

gets (oldname);

printf ("Enter new name for file:");

gets (newname);

if (rename (oldname, newname)==0)’

printf ("&s has been renamed &s. \ n", oldname, newname);

else

fprintf (stderr, "An error has occurred renaming &s. \ n ", oldname);

return 0;

}

Нәтиже 
                   Enter current filename:  list 1609.c

                   Enter new name for file: renameit.c 

                   List1609.c has been renamed renameit.c 

            Файл көшірмесін жазуға жиі қажет болады – оның дәл дубликаты басқа атпен   (сол атпен бірақ басқа каталогта). Dos жүйесінде ол Copy командасы арқылы істелінеді. Басқа операциялық жүйелерде  сонымен қатар ұқсас командалар болады. Ал Си  программалау тілінде оны қалай істелінетін айта кетсек бір қарағанда бұл оңай жұмыс емес болып көрінеді, бірақ шындығында Си тілінде ағынның кезінде бұл мақсат оп – оңай шешіледі.Ол үшін мыналарды орындау керек:

            1.Негізгі файлды оқу үшін екілік тәртіпті ашу ( Екілік тәртіптін қажеті, ол файлдың мәтінді түрін ғана емес кез келген үлгілерді көшіруге мүмкіндік береді)

     2.Екілік  тәртіпте жазуға арналған файл  – көшірмесін ашу.

     3. Шыққан файлдан байтты оқу.  Файлдың басында ашылған сілтеуіш түрлері автоматты түрде қондырылады, сол үшін арнайы оператормен қайта қондыруды ескеру керек.

     4. Егер ең соңғы негізгі файлда feof ( ) функциясы табылса , онда  көшіру  аяқталынады.

     5  Егер файлдын соңына әлі де  жетпесе, файл – көшірмесін  символға жазу және қайта оралу.

    1. Файлдар және ағымдар

     Си тілі кез – келген файлды жалғаспалы байттар ағымы бойынша қарастырады. Әр файл маркерлік файл соңымен немесе программада жұмыс істейтін файлдармен анықталған ерекше  байтпен аяқталады. Файл ашылғанда оған тиісті ағым қойылады. Программаның орындалуының басында автоматты түрде үш файл және сонымен байланысты ағымдар ашылады. Олар: стандартты  енгізу, стандартты  шығару, стандартты қате. Ағымдар файлдармен программалардың мәліметтерінің арасындағы байланысты қамтамасыз етеді.  Ашылған файл file құрылымының көрсеткішіне апарады. Онда файлмен жұмыс кезінде қолданатын мәліметтер жиынтығы бар. Бұл жүйе дескриптор файлынан тұрады. Әр элемент массиві файлды басқару блогынан тұрады.

  Айналдыру үшін стандартты енгізу,  стандартты шығару және стандартты ағында stdin, stbout және stderr файлдарына сәйкес көрсеткіштердегі қатені пайдаланады. 

      0    1      2      3      4      5     6      7      8     9     ...     n-1   

                        ...   Файлдағы маркер соңы
 

     Стандартты  кітапханалық көптеген функциялық оқылатын мәліметтер файлынан және көшірме мәліметтер файылынан тұрады. Функция fgetc, getchar сияқты файлдан бір символды теріп  алады. Функция fgetc аргумент сияқты FILE батырмасына файл үшін көрсетіп, мәліметтер алады, содан бір символ алынып тұрады. Шақыру fgetc (stdin) бір символды stdin – стандартты енгізуде теріп алады. Осындай шақыру болып табылады.  Функция  fputc, putchar сияқты бір символды алып, оны жазуға тиіс. Шақыру функциясы   fputc( ‘a’, stbout) ‘a’ stbout-стандартты шығару символын жазады.

Осындай шақыру эквивалент функциясы putchar (‘a’) болып табылады.

       Бірнеше басқа функциялар оқу  үшін арналған мәліметтер стандартты  енгізуде және стандартты қорытынды  жазуда қолданылып, олар бірдей  атпен жазылып, файлдар операциясында қолданылады. Мысалы: fgetc және fputc, функциялары файлдан жолдарды оқу үшін және жолдарды файлға бастыру үшін қолданылады.

     Файлды  жою үшін remove () кітапханалық функциясы  қолданылады. Оның прототипі stdio.h файлында тұрады, оны құрылымы:

                            int remove ( const char * filename );

     Файл атына * filename айнымалысы көрсеткіш болады да, өшіруді талап етеді. Көрсетілген файл өшіру кезінде ашық болмау керек.

     Егер файл өшпеген болса, онда операциондық жүйе файлды өшіреді. Del командасында орындалатын сияқты, команда қатарында Dos немесе Windows не болмаса rm командасы UNIX-те орындалады. Мұндай жағдайда remove функциясы 0 деген нәтиже береді.

     Файл жоқ болған жағдайда функция – 1 деген нәтиже берсе, тек ғана оны оқуға болады, сондай-ақ программаның оған қатысы болмайды және де қателерді де қарамайды. remove.e функциясының программасы қарастырылған:

# include < stdio.h >

 int main ( viod )

 {

char filename [80];

printf ( “Enter the filename to delete:” ),

gets ( filename );

if (remove (filename) ==8)

printf ( “The file % 5 has been deleted \n”, filename );

else

fprintf ( stderr, “Error deleting the file % 5 ) n”, filename;

return 0;

}

Нәтиже. Enter the filename to delete:* bak

            Error deleting the file *. Bak

            Enter the filename

            To delete: list 1414. bak

МАЗМУНЫ.doc

— 58.50 Кб (Открыть, Скачать)

титулка.doc

— 25.00 Кб (Открыть, Скачать)

Информация о работе «С++ тілінде программалау» пәні бойынша