Uživatelské nástroje

Nástroje pro tento web


strprg:projekty:bmp

Projekt čtečka BMP souborů

Dostali jsme úkol vytvořit čtečku BMP souborů. Program má ve své rané, ovšem nejspíše poslední fázi, neboť je určen spíše pro začátky programování s bitmapovými soubory, jen několik málo funcí:

  1. Načíst soubor ze složky, ve které se program nachází.
  2. Přečíst první dva byty z tohoto souboru.
  3. Pomocí 1. a 2. zkontrolovat, jestli je soubor skutečně bitmapa.

Zde je celý zdrojový kód programu:

#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;
}

Vysvětlení:

#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;
}

* 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], museli bychom ale potom spouštět funkci fread() dvakrát - 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.txt · Poslední úprava: 20. 03. 2014, 14.24 (upraveno mimo DokuWiki)