Uživatelské nástroje

Nástroje pro tento web


strprg:projekty:bmp

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
strprg:projekty:bmp [05. 03. 2014, 15.41]
lookin vytvořeno
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 čtečku BMP souborů.
 +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í.
 +  - Přečíst první dva byty z tohoto souboru.
 +  - Pomocí 1. a 2. zkontrolovat,​ jestli je soubor skutečně bitmapa.
 +
 +Zde je celý zdrojový kód programu:
 +<code c>
 +#include <​stdio.h>​
 +#include <​stdlib.h>​
 +
 +int main(int argc, char *argv[])
 +{
 +  char type[2];  ​
 +    ​
 +  FILE * file;
 +  file = fopen("​lenna.bmp",​ "​rb"​);​
 +  if (file == NULL){
 +     ​printf("​Zadnej soubor.\n"​);​
 +     ​system("​PAUSE"​);​
 +     ​return 1;         
 +  }  ​
 +  ​
 +  fread(type, 1, 2, file);
 +  if (type[0]!='​B'​ || type[1]!='​M'​){
 +     ​printf("​Neni bitmapa.\n"​);​
 +     ​system("​PAUSE"​);​
 +     ​return 2;
 +  }
 +  ​
 +  printf("​Je to bitmapa."​);​
 +  system("​PAUSE"​);​
 +  return 0;
 +}
 +</​code>​
 +
 +
 +Vysvětlení:​
 +<code c>
 +#include <​stdio.h>​
 +#include <​stdlib.h>​
 +
 +int main(int argc, char *argv[])
 +{
 +  char type[2]; //​vytvoříme proměnnou, do které budeme načítat první dvě písmena (byty) z dotyčné bitmapy. ​
 +    ​
 +  FILE * file;  //​vytvoříme proměnnou, do které budeme načítat námi oblíbený soubor.
 +  file = fopen("​lenna.bmp",​ "​rb"​); ​    //do proměnné načteme soubor*
 +  if (file == NULL){ ​                  //​kontrola,​ jestli soubor vůbec existuje
 +     ​printf("​Zadnej soubor.\n"​);​
 +     ​system("​PAUSE"​);​
 +     ​return 1;         
 +  }  ​
 +  ​
 +  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 type sedí
 +     ​printf("​Neni bitmapa.\n"​);​
 +     ​system("​PAUSE"​);​
 +     ​return 1;
 +  }
 +  ​
 +  printf("​Je to bitmapa."​); ​   //jestliže se algoritmus dostane do tohoto bodu, obrázek je bitmapa. ZÁZRAK
 +  system("​PAUSE"​);​
 +  return 0;
 +}
 +</​code>​
 +
 +
 +
 +----
 +
 +* funkce fopen() funguje následovně:​
 +fopen("​umístění/​název souboru",​ "​režim"​);​
 +Režim sděluje programu, jakým způsobem chceme soubor zneužít.
 +3 typy režimů:
 +w (write = psát) - přepíše celý soubor
 +a (append = přidat) - píše na konec souboru
 +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.
 +
 +%%**%% funkce fread() funguje následovně:​
 +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** 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éž.
strprg/projekty/bmp.1394030515.txt.gz · Poslední úprava: 05. 03. 2014, 15.41 (upraveno mimo DokuWiki)