Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
strprg:projekty:bmp [19. 03. 2014, 21.54] hexorr |
strprg:projekty:bmp [20. 03. 2014, 14.24] (aktuální) |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Projekt čtečka BMP souborů ====== | ====== Projekt čtečka BMP souborů ====== | ||
- | Dostali jsme úkol vytvořit tzv. Čtečku BMP souborů. | + | Dostali jsme úkol vytvořit čtečku BMP souborů. |
- | Program má ve své ranné, ovšem nejspíše poslední fázy, neboť je určen spíše pro začátky programování s Bitmapovými soubory, jen několik málo funcí: | + | Program má ve své rané, ovšem <del>nejspíše poslední</del> fázi, neboť je určen spíše pro začátky programování s bitmapovými soubory, jen několik málo funcí: |
- Načíst soubor ze složky, ve které se program nachází. | - Načíst soubor ze složky, ve které se program nachází. | ||
- Přečíst první dva byty z tohoto souboru. | - Přečíst první dva byty z tohoto souboru. | ||
- | - Pomocí 1. a 2. zkontrolovat, jestli je soubor zkutečně Bitmapa. | + | - Pomocí 1. a 2. zkontrolovat, jestli je soubor skutečně bitmapa. |
Zde je celý zdrojový kód programu: | Zde je celý zdrojový kód programu: | ||
Řádek 19: | Řádek 19: | ||
file = fopen("lenna.bmp", "rb"); | file = fopen("lenna.bmp", "rb"); | ||
if (file == NULL){ | if (file == NULL){ | ||
- | printf("Zadnej soubor."); | + | printf("Zadnej soubor.\n"); |
system("PAUSE"); | system("PAUSE"); | ||
return 1; | return 1; | ||
Řádek 26: | Řádek 26: | ||
fread(type, 1, 2, file); | fread(type, 1, 2, file); | ||
if (type[0]!='B' || type[1]!='M'){ | if (type[0]!='B' || type[1]!='M'){ | ||
- | printf("Neni bitmapa."); | + | printf("Neni bitmapa.\n"); |
system("PAUSE"); | system("PAUSE"); | ||
- | return 1; | + | return 2; |
} | } | ||
| | ||
Řádek 50: | Řádek 50: | ||
file = fopen("lenna.bmp", "rb"); //do proměnné načteme soubor* | file = fopen("lenna.bmp", "rb"); //do proměnné načteme soubor* | ||
if (file == NULL){ //kontrola, jestli soubor vůbec existuje | if (file == NULL){ //kontrola, jestli soubor vůbec existuje | ||
- | printf("Zadnej soubor."); | + | printf("Zadnej soubor.\n"); |
system("PAUSE"); | system("PAUSE"); | ||
return 1; | return 1; | ||
} | } | ||
| | ||
- | fread(type, 1, 2, file); //do proměnné type[] přiřazujeme první dva byty* * | + | fread(type, 1, 2, file); //do proměnné type[] přiřazujeme první dva byty** |
- | if (type[0]!='B' || type[1]!='M'){ //zkontrolujeme, jestli první dva znaky načtené do typeu sedí | + | if (type[0]!='B' || type[1]!='M'){ //zkontrolujeme, jestli první dva znaky načtené do type sedí |
- | printf("Neni bitmapa."); | + | printf("Neni bitmapa.\n"); |
system("PAUSE"); | system("PAUSE"); | ||
return 1; | return 1; | ||
Řádek 72: | Řádek 72: | ||
---- | ---- | ||
- | *funkce fopen() funguje následovně: | + | * funkce fopen() funguje následovně: |
fopen("umístění/název souboru", "režim"); | fopen("umístění/název souboru", "režim"); | ||
Režim sděluje programu, jakým způsobem chceme soubor zneužít. | Režim sděluje programu, jakým způsobem chceme soubor zneužít. | ||
3 typy režimů: | 3 typy režimů: | ||
w (write = psát) - přepíše celý soubor | w (write = psát) - přepíše celý soubor | ||
- | a (?add = přidat?) - píše na konec souboru | + | a (append = přidat) - píše na konec souboru |
r (read = číst) - pouze čte soubor | r (read = číst) - pouze čte soubor | ||
Pokud za písmenko režimu napíšeme b (tedy např.: rb), bude program se souborem pracovat v binárním režimu. | Pokud za písmenko režimu napíšeme b (tedy např.: rb), bude program se souborem pracovat v binárním režimu. | ||
- | * * funcke fread() funguje následovně: | + | %%**%% funkce fread() funguje následovně: |
- | fread(ukazatel proměnné - do níž ukládáme, po kolika bytech, kolikrát, proměnná našeho krásného souboru); | + | fread(ukazatel proměnné - do níž ukládáme, po kolika bytech, kolikrát, proměnná souboru); |
- | Pokud tedy napíšeme fread(type, 1, 2, file); program umístí do každého políčka proměnné **type**u po **1** bytu **2**-krát. Načítat bude z pole **file**. | + | Pokud tedy napíšeme fread(type, 1, 2, file); program umístí do každého políčka proměnné **type** po **1** bytu **2**-krát. Načítat bude z pole **file**. !!!**POZOR**!!! Kdyby type nebylo vícemístné pole, musíme psát před proměnnou & - je to ukazatel. V předchozí situaci bychom mohli napsat i &type[0], <del>museli bychom ale potom spouštět funkci fread() dvakrát</del> - nemuseli, funkce fread dostane tentýž ukazatel, byť tentokrát ne ve významu //ukazatel na pole// ale ve významu //ukazatel na první políčko//. To je ale totéž. |
- | + | ||
- | !!!**POZOR**!!! Kdyby type nebylo vícemístné pole, musíme psát před proměnnou & - je to ukazatel. V předchozí situaci bychom mohli napsat i &type[0], museli bychom ale potom spouštět funkci fread() dvakrát. | + | |
- | + | ||
- | Ok jdu na pivo čus. | + |