Vstup a výstup zo/do súboru



Similar documents
LV5WDR Wireless Display Receiver Rýchla príručka

File Handling. What is a file?

Sledovanie čiary Projekt MRBT

Module 816. File Management in C. M. Campbell 1993 Deakin University

As previously noted, a byte can contain a numeric value in the range Computers don't understand Latin, Cyrillic, Hindi, Arabic character sets!

Prestige 660HN-T3A Príručka k rýchlej inštalácii splittra a smerovača (routra)

Návod k použití: Boxovací stojan DUVLAN s pytlem a hruškou kód: DVLB1003

WLA-5000AP. Quick Setup Guide. English. Slovensky. Česky a/b/g Multi-function Wireless Access Point

WK29B / WK29W. Bluetooth Wireless Slim Keyboard. User manual ( 2 5 ) Uživatelský manuál ( 6 10) Užívateľský manuál (11 15)

In order to print off elements as columns, use the \n command. The format commands will be used over and over until all the elements are printed.

System Calls and Standard I/O

Príručka na vyplňovanie

: Architectural Lighting : Interiérové svietidlá

Informatica e Sistemi in Tempo Reale

Príklady riadenia kvality z vybraných krajín

ASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters

การโปรแกรมคอมพ วเตอร (Computer Programing)

Tutorial on C Language Programming

Embedded Systems Design Course Applying the mbed microcontroller

Postup pre zistenie adries MAC a vytvorenie pripojenia. v OS Windows

Môže sa to stať aj Vám - sofistikované cielené hrozby Ján Kvasnička

Ústredná knižnica FaF UK informuje svojich používateľov o prístupe do ONLINE VERZIE EUROPEAN PHARMACOPOEIA (EP)

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Siemens CardOS API. PIN a PUK manažment. DISIG, a.s. Záhradnícka Bratislava 2

So far we have considered only numeric processing, i.e. processing of numeric data represented

Illustration 1: Diagram of program function and data flow

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Sources: On the Web: Slides will be available on:

My Passport Ultra Metal Edition

LAZARUS Obsah: 1 LAZARUS

ADAM A SYN LED LIGHT STRIP

Fundamentals of Programming

DESIGN: A Program to Create Data Entry Programs

Kozmické poasie a energetické astice v kozme

GUJARAT TECHNOLOGICAL UNIVERSITY, AHMEDABAD, GUJARAT COURSE CURRICULUM. Course Title: Advanced Computer Programming (Code: )

Klesajúca efektívnosť? Nekontrolovateľné náklady? Strácate zisk? Nie ste schopní

CS 241 Data Organization Coding Standards

Luboslav Lacko Visual Studio Tools for Office

Pripojenie k internetu v pevnej sieti

Lecture 25 Systems Programming Process Control

C Examples! Jennifer Rexford!

OSOBNOSTNÉ ASPEKTY ZVLÁDANIA ZÁŤAŽE

Príprava dát s bielou na tlačový stroj


Rychlý průvodce instalací Rýchly sprievodca inštaláciou

System Calls Related to File Manipulation

ING (L) Société d Investissement à Capital Variable 3, rue Jean Piret, L-2350 Luxembourg R.C.S.: Luxembourg B č (ďalej ako spoločnosť )

LEG BANDAGE Bandáž dolných končatín

BSc (Hons) Business Information Systems, BSc (Hons) Computer Science with Network Security. & BSc. (Hons.) Software Engineering

PRÍSPEVOK K APLIKÁCII SYSTÉMU NI LABVIEW VO VYŠETROVANÍ KONTAKTU PNEUMATIKY A TERÉNU

Európska komisia stanovuje ambiciózny akčný program na podporu vnútrozemskej vodnej dopravy

JEDNOFÁZOVÝ STATICKÝ ELEKTROMER NA VIACSADZBOVÉ MERANIE ČINNEJ ENERGIE


C / C++ and Unix Programming. Materials adapted from Dan Hood and Dianna Xu

The programming language C. sws1 1

TR1130 NÁVOD K POUŽITÍ NÁVOD NA POUŽITIE USER MANUAL

Output: struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;

COMPUTER SCIENCE 1999 (Delhi Board)

3/13/2012. Writing Simple C Programs. ESc101: Decision making using if-else and switch statements. Writing Simple C Programs

KONTAKT CHEMIE Kontakt PCC

LOW LEVEL FILE PROCESSING

Fortify on Demand Security Review. Fortify Open Review

PLATNOSŤ POBYTU DO/validity of the residence permit. VLASTNORUČNÝ PODPIS/signature

ODVLHČOVAČ MDF2-12DEN3 MDF2-16DEN3 MDF2-20DEN3 MDN1-10DEN3

>

The POSIX Socket API

HYUNDAI Phablet HP503Q

URI and UUID. Identifying things on the Web.

PORUCHY A OBNOVA OBALOVÝCH KONŠTRUKCIÍ BUDOV - Podbanské 2012

Martin Babka. Automatizace hierarchických experimentů

TVORBA KOMUNIKAČNEJ KAMPANE S VYUŢITÍM DIGITÁLNYCH MÉDIÍ

Giving credit where credit is due

Lecture 16: System-Level I/O

arrays C Programming Language - Arrays

Upozorňujeme,že můžete formáty pro čtečky převádět ON-LINE na internetu do formátu PDF apod.

MICROSOFT WORD Mgr. Krejčí Jan (ZSJP) MICROSOFT WORD září / 21

Outline. Conditional Statements. Logical Data in C. Logical Expressions. Relational Examples. Relational Operators

SK7495. Notebook PC. Používateľská príručka pre systém Windows 8

JEDNODUCHÝ GRAMATICKÝ KOREKTOR

1 Abstract Data Types Information Hiding

Lab 4: Socket Programming: netcat part

Member Functions of the istream Class

Keywords are identifiers having predefined meanings in C programming language. The list of keywords used in standard C are : unsigned void

The C Programming Language course syllabus associate level

While Loop. 6. Iteration

IPC. Semaphores were chosen for synchronisation (out of several options).

MODULE CAN R/S MODULE CAN BUS MAGICAR MODUL CAN R/S MODUL CAN BUS MAGICAR

PLAVECKÝ KLUB RIMAVSKÁ SOBOTA. III. ročník POHÁR PRIATEĽSTVA

CONTEMPORARY POSSIBILITIES OF MODELING OF THE PROBLEMS OF VEHICLE TRACK INTERACTION

Lecture 3. Arrays. Name of array. c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] Position number of the element within array c

6/08. a KARTOGRAFICKÝ GEODETICKÝ. Český úřad zeměměřický a katastrální Úrad geodézie, kartografie a katastra Slovenskej republiky

Ukazovacie zariadenia a klávesnica Používateľská príručka

TURBO PASCAL I. Petr Drlík


Komunikácia s čítačkou odtlačkov prstov v jazyku Java

C++ Programming Language

Transcription:

Obsah 6 Vstup a výstup zo/do súboru 2 6.1 Otvorenie a zatvorenie súboru..................... 2 6.1.1 Otvorenie súboru - funkcia fopen............... 2 6.1.1.1 Módy pre otvorenie súboru............. 2 6.1.2 Zatvorenie súboru - funkcia fclose.............. 3 6.2 Vstup a výstup jedného znaku..................... 3 6.2.1 Vstup - funkcia getc...................... 3 6.2.2 Výstup - funkcia putc..................... 3 6.3 Vstup a výstup rôznych typov dát.................... 4 6.3.1 Vstup - funkcia fscanf.................... 5 6.3.2 Výstup - funkcia fprintf................... 5 1

Kapitola 6 Vstup a výstup zo/do súboru Rovnako ako ked sme tlačili znak na terminál (obrazovku) alebo načítavali znak z klávesnice, takisto môžeme čítat /zapisovat zo/do súboru. Funkcie, ktoré budeme na tieto operácie využívat sú funkciami štandardného hlavičkového súboru stdio.h. 6.1 Otvorenie a zatvorenie súboru Ak chceme v jazyku C pracovat so súborom, tak ho musíme najprv otvorit - načítat do pamäte počítača a až po úspešnom načítaní môžeme vykonávat so súborom požadované operácie. 6.1.1 Otvorenie súboru - funkcia fopen FILE *fopen(const char *path, const char *mode); Funkcia fopen vyžaduje dva parametre. Prvý parameter path určuje cestu k súboru vrátane jeho názvu. Druhý parameter je mód, v ktorom chceme s daným súborom pracovat. Ak súbor existuje a je možné s ním pracovat, tak funkcia vracia ukazovatel na tento súbor - FILE *stream. Ak súbor nie je možné otvorit, tak funkcia vracia hodnotu NULL. Je potrebné vždy overit, či sa súbor otvoril a či nepracujeme s nulovým ukazovatel om - teda ukazovatel om, ktorý neukazuje na platnú adresu v pamäti! 6.1.1.1 Módy pre otvorenie súboru Kvôli jednoduchosti úvadzam iba základné módy pre otvorenie súboru. r (read - čítat ) - súbor sa otvorí len na čítanie. Ak súbor neexistuje, tak funkcia nevytvára súbor. 2

KAPITOLA 6. VSTUP A VÝSTUP ZO/DO SÚBORU 3 w (write - zapisovat ) - súbor sa otvorí len na čítanie/zapisovanie. Ak súbor neexistuje, tak sa vytvorí prázdny súbor s uvedeným menom. a (append - pripísat ) - rovnaký mód ako w len s tým rozdielom, že pokial súbor už existuje a jeho obsah nie je prázdny, tak sa začne zapisovat na koniec tohto súboru, takže obsah súboru sa nezruší ako pri móde w. 6.1.2 Zatvorenie súboru - funkcia fclose int fclose(file *stream); Funkcia zatvorí súbor, ktorý je načítaný v pamäti. Ak zatvorenie prebehlo úspešne, tak funkcia vracia hodnotu 0, inak vracia hodnotu EOF - End Of File (hodnota EOF je -1). 6.2 Vstup a výstup jedného znaku 6.2.1 Vstup - funkcia getc Pomocou funkcie getc môžeme načítat vstup zo súboru. prototyp funkcie getc int getc(file *stream); Funkcia načíta znak zo súboru, ktorý je načítaný v pamäti a ukazuje na neho deskriptor súboru - napríklad premenná stream typu F ILE. Návratová hodnota funkcie je pretypovaná hodnota typu unsigned char na int. Ak funkcia narazí na koniec súboru, tak vracia hodnotu EOF. 6.2.2 Výstup - funkcia putc Pomocou funkcie putc môžeme zapisovat do súboru. prototyp funkcie putc int putc(int c, FILE *stream); Funkcia zapíše do súboru, na ktorý ukazuje stream znak. Návratová hodnota funkcie je znak, ktorý bol zapísaný do súboru alebo EOF v prípade, že sa vyskytla chyba. Príklad /* * File: getc_putc.c * Author: Filip * Description: Programme loads data from in.txt file and converts all letters to upper case. * Date: Sun Dec 10 2006

KAPITOLA 6. VSTUP A VÝSTUP ZO/DO SÚBORU 4 * Note: Output is in file named out.txt. */ #include <stdio.h> #include <ctype.h> #define INPUT "in.txt" #define OUTPUT "out.txt" int main() { FILE *fr; //fr - file read FILE *fw; //fw - file write int c; if ((fr = fopen(input, "r")) == NULL) { //open file for reading printf("cannot open file %s \n", INPUT); if ((fw = fopen(output, "w")) == NULL) { //open file for writing printf("cannot open file %s \n", OUTPUT); while ((c = getc(fr))!= EOF) putc(toupper(c), fw); //toupper -> convert letter to upper case (a -> A) //close file descriptor fclose(fr); fclose(fw); Program číta zo súboru in.txt po jednom znaku. Ak sa jedná o písmeno, tak sa toto písmeno prekonvertuje na vel ké písmeno pomocou funkcie toupper. Na použitie tejto funkcie bolo potrebné pripojit hlavičkový súbor ctype.h. Následne sa znak zapisuje do súboru out.txt, ktorý bol otvorený na zapisovanie. Cyklus while je použitý preto, lebo čítame dovtedy, kým nenarazíme na koniec súboru, čiže dopredu nevieme, kol ko znakov obsahuje súbor (aj ked by sa to samozrejme dalo zistit - porozmýšl ajte ako). Na konci programu sa obidva súbory musia pomocou funkcie fclose zatvorit. Skúste si rozmysliet, ako by ste implementovali (naprogramovali) funkciu toupper. 6.3 Vstup a výstup rôznych typov dát Analogicky ako pri vstupe/výstupe na terminál sme používali printf alebo scanf funkciu, tak pri súboroch budeme používat fprintf, fscanf funkcie. Jednotlivé formáty pre príslušné typy premenných (znak, celé číslo, reálne číslo, ret azec) nájdete v časti 3.3.

KAPITOLA 6. VSTUP A VÝSTUP ZO/DO SÚBORU 5 6.3.1 Vstup - funkcia fscanf Pomocou funkcie fscanf môžeme načítat vstup zo súboru, ktorý môže predstavovat znak, celé číslo, reálne číslo alebo ret azec. prototyp funkcie fscanf int fscanf(file *stream, const char *format,...); Funkcia vyžaduje ako prvý parameter ukazovatel na súbor a d alšie parametre sú rovnaké ako pri funkcii scanf. Návratová hodnota funkcie je počet úspešne načítaných hodnôt (parametrov) alebo v prípade chyby hodnota EOF. 6.3.2 Výstup - funkcia fprintf Pomocou funkcie fprintf môžeme zapisovat do súboru znak, číslo (celé, reálne) alebo ret azec. prototyp funkcie fprintf int fprintf(file *stream, const char *format,...); Funkcia vyžaduje ako prvý parameter ukazovatel na súbor a d alšie parametre sú rovnaké ako pri funkcii printf. Príklad /* * File: fscanf_fprintf.c * Author: Filip * Description: Programme reads numbers from in.txt file and writes their sum to out.txt file. * Date: Sun Dec 10 2006 */ #include <stdio.h> #define INPUT "in.txt" #define OUTPUT "out.txt" int main() { FILE *fr; //fr - file read FILE *fw; //fw - file write float fnumber, fsum = 0; if ((fr = fopen(input, "r")) == NULL) { //open file for reading printf("cannot open file %s \n", INPUT); if ((fw = fopen(output, "w")) == NULL) { //open file for writing printf("cannot open file %s \n", OUTPUT); while ((fscanf(fr, "%f", &fnumber))!= EOF)

KAPITOLA 6. VSTUP A VÝSTUP ZO/DO SÚBORU 6 fsum += fnumber; //fsum = fsum + fnumber fprintf(fw, "Sum: %lg\n", fsum); printf("sum: %lg\n", fsum); //close file descriptor fclose(fr); fclose(fw); Program číta čísla zo súboru in.txt. Ked že v súbore môžu byt aj reálne čísla, tak je použitá premenná typu float a vo funkcii fscanf je %f. Premenná fsum predstavuje súčet všetkých čísel, ktoré sú v súbore in.txt. Po načítaní všetkých čísel zapíšeme výsledok do súboru out.txt a rovnako ho vypíšeme aj na obrazovku. Na konci programu uzatvoríme obidva súbory, s ktorými sme pracovali.