11b Další příklady operací vstupu a výstupu (úvod viz 10)

Podobné dokumenty
10 Práce s řetězci - pokračování

- jak udělat konstantu long int: L long velka = 78L;

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

- tzv. standardní vstupní a výstupní proud (input / output stream)

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky

Standardní vstup a výstup

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Práce se soubory. Základy programování 2 Tomáš Kühr

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Základy programování (IZP)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

vstup a výstupv jazyce C

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Vstup a výstup datové proudy v C

VISUAL BASIC. Práce se soubory

Operační systémy. Cvičení 4: Programování v C pod Unixem

Př. další použití pointerů

Lekce 19 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

vstup a výstupy jazyce C

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

První začátky s C. Struktura programu a základní prvky. Základní termíny (1) Základní termíny (2)

Struktura programu a základní prvky

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

Základy PERLu snadno a rychle

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Zápis programu v jazyce C#

Funkce, intuitivní chápání složitosti

11a Dynamické dvourozměrné pole (obdobně vícerozměrné)

Ošetřování chyb v programech

Úvod do programování. Lekce 3

PB071 Programování v jazyce C

vstup a výstupy jazyce C

Základy programování (IZP)

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Stromy, soubory. BI-PA1 Programování a Algoritmizace 1. Ladislav Vagner, Josef Vogel

Základy programování (IZP)

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Formátové specifikace formátovací řetězce

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

2 Datové typy v jazyce C

Vstupní a vstupní proudy v C++

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Algoritmizace a programování

Práce s řetězci. IUJCE Přednáška č. 10. string.h. vrací: délku řetězce str (bez '\0')

ALGORITMY A PROGRAMOVÁNÍ V JAZYCE C/C++

Programovanie v jazyku C - struktury a polia

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

IUJCE 07/08 Přednáška č. 6

Algoritmizace a programování

Algoritmizace a programování

IUJCE 07/08 Přednáška č. 1

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Algoritmizace a programování

Konstruktory překladačů

Jazyk C# (seminář 5)

Pointery II. Jan Hnilica Počítačové modelování 17

Jazyk C základní informace. Vlastnosti

Programovani v Maplu Procedura

Reference jazyka C - Tahák

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

1. Téma 12 - Textové soubory a výjimky

Stručný návod k programu Octave

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

Programovanie v jazyku C - funkcie a makra

Knihovny funkcí. Chyby v CRT. IUJCE Přednáška č. 9

Základy programování (IZP)

BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel. 10., 12. a 13. října 2017

E+034 = ; = e E+034

Transkript:

11b Další příklady operací vstupu a výstupu (úvod viz 10) V souboru budu mít uloženo:....... ahoj - čtu tečky pomocí c = getc(fr) až po 'a', ale potom volám funkci, která má zpracovat celé slovo ahoj a nepočítá s tím, že už bylo "vyčteno" - vrátíme znak do vstup. bufferu: ungetc(c, fr) - když se to povede - funkce vrátí jako výsledek vrácený znak (tj. 'a') jinak vrací EOF. Př.: čte znaky a tiskne je na obrazovku (po jednom) int main() FILE *fr int c fr = fopen("text.txt", "r") if(fr == NULL) printf("soubor nejde otevrit!\n") getchar() //cekani na stisk klavesy return(1) /* cteni a tisk souboru text.txt */ while((c = getc(fr))!= EOF) putchar(c) if (fclose(fr) == EOF) printf("soubor text.txt se nepodarilo uzavrit\n") return

while (!kbhit()) return (0) //cekani na stisk klavesy Čtení znaku s testem konce souboru, lze také takto: /* cteni a tisk souboru text.txt */ while(!feof(fr)) c = getc(fr) putchar(c) Př.: Program čte celá čísla z textového souboru (formátovaně) a zapisuje do jiného souboru int main() FILE *fr, *fw int a, b fr = fopen("prvni.txt", "r") // otevřeme pro čtení fw = fopen("druhy.txt", "w") // otevřeme pro zápis if(fr == NULL fw == NULL) printf("soubor nejde otevrit!\n") /* před koncem programu musíme uzavřít všechny soubory */ if(fr!= NULL) fclose(fr) if(fw!= NULL) fclose(fw) while(!kbhit()) return (1)

// formátovaně čtu z fr(předp. celé_číslo celé_číslo) fscanf(fr, "%d %d", &a, &b) // formátovně ukládám do souboru fw (formátovaně neboť // tisknu celé_číslo + celé_číslo = celé_číslo) fprintf(fw, "%d + %d = %d\n", a, b, a + b) fclose(fr) fclose(fw) while(!kbhit()) return (0) Kompletní varianta předešlého příkladu: #include <stdio.h> int main(void) FILE *fr, *fw int a, b fr = fopen("prvni.txt", "r") // otevřeme pro čtení fw = fopen("druhy.txt", "w") // otevřeme pro zápis if(fr == NULL fw == NULL) printf("soubor nejde otevrit!\n") /* před koncem programu musíme uzavřít všechny soubory */ if(fr!= NULL) fclose(fr) if(fw!= NULL) fclose(fw) while(!kbhit()) return (1)

while (1) // formátovaně čtu z fr(předp. celé_číslo celé_číslo) fscanf(fr, "%d %d", &a, &b) // formátovně ukládám do souboru fw (formátovaně neboť tisknu celé_číslo + celé_číslo = celé_číslo) fprintf(fw, "%d + %d = %d\n", a, b, a + b) // pro kontrolu tisknu tez na obrazovku printf("%d + %d = %d\n", a, b, a + b) // jsem-li na konci souboru fr, opustím cyklus a už netisknu if(feof(fr)) break // konec cyklu while if (fclose(fr) == EOF) printf("soubor prvni.txt se nepodarilo uzavrit\n") return if (fclose(fw) == EOF) printf("soubor druhy.txt se nepodarilo uzavrit\n") return else printf("soubor s vysledky (druhy.txt) byl uspesne vytvoren\n") while(!kbhit()) return (0)

Př.: Kopírování souboru s ošetřením otevírání a uzavíraní souboru #include <stdio.h> /* Čekání volá funkci operačního systému, která se liší v různých systémech. Proto si připravím makro CEKEJ a na jiném systému to změním pouze zde a nemusím hledat na jakých řádcích jsem čekání použil. */ #define CEKEJ system("pause") main() FILE *fr, *fw int c fr = fopen("orig.txt", "r") if (fr == NULL) printf("soubor ORIG.TXT se nepodarilo otevrit\n") CEKEJ return /* ukonceni programu */ if ((fw = fopen("kopie.txt", "w")) == NULL) printf("soubor KOPIE.TXT se nepodarilo otevrit\n") CEKEJ return /* ukonceni programu */ while ((c = getc(fr))!= EOF) putc(c, fw) if (fclose(fr) == EOF) printf("soubor ORIG.TXT se nepodarilo uzavrit\n") CEKEJ return if (fclose(fw) == EOF) printf("soubor KOPIE.TXT se nepodarilo uzavrit\n") CEKEJ return CEKEJ

Pozn. k souborům obecně - jak zadat název soub. a cestu z klávesnice char rezim[4], cesta[51] /* vzdy kolikn chci + 1 na '\0' */ scanf("%3s", rezim) /* ctu 2 znaky z klav.,u retezcu se nedela & */ scanf("%50s", cesta) f = fopen(cesta, rezim) Práce s binárními soubory FILE *fr, *fw fr = fopen("d:\\pozdravy\\nazdar.bmp", "rb") fw = fopen("d:\\pozdravy\\nazdar2.bmp", "wb") Textové vs. binární soubory 65535 - v textovém souboru 5 byte - neboť 5 znaků 65535 - v binárním souboru 2 byte - binárně: 65535 D = 1111111111111111 B - textové se snadno upravují v editoru - s binárními je rychlejší práce (ale trochu složitější) int fread(char *kam, int velikost, int pocet, FILE *soubor) kde: kam pole do kterého načítám ze souboru velikost kolik byte má jedna jednotka dat (hodnota, např. 1 pro char, 8 pro double atp.) pocet kolik hodnot chci načíst najednou (dáno velikostí kam)

int fwrite(char *odkud, int velikost, int pocet, FILE *soubor) - posun na libovolné místo v bin souboru int fseek(file *soubor, long posun, int odkud) - odkud má jednu z hodnot: SEEK_SET - od začátku souboru SEEK_CUR - od aktuální pozice-kde jsem byl naposled SEEK_END - od konce souboru - je-li posun úspěšný vrací 0, jinak nenul. hodnotu long ftell(file *soubor) - vrací kolik byte jsme od začátku souboru #include <stdio.h> #define BUFF_SIZE 512 int main() FILE *fr int nacteno[buff_size] int kolikprecteno, i fr = fopen("prezentace.pptx", "rb") if(fr == NULL) printf("soubor nejde otevrit!\n") getchar() //cekani na stisk klavesy

return(1) while (getchar()!= '\n') printf("\n") /* cteni a tisk z binarniho souboru */ while(!feof(fr)) kolikprecteno = fread(nacteno, sizeof(int), BUFF_SIZE, fr) for(i = 0 i < kolikprecteno i++) printf("%d\n", nacteno[i]) printf("--------pozice v souboru je %d -------- \n", ftell(fr)) if (kbhit()) printf("cteni souboru ukonceno uzivatelem...") break if (fclose(fr) == EOF) printf("soubor text.txt se nepodarilo uzavrit\n") return printf("\nkonec cteni souboru...\n") while (getchar()!= '\n') while (!kbhit()) //cekani na stisk klavesy return (0)