Uživatelské nástroje

Nástroje pro tento web


strprg:projekty:bmp

Toto je starší verze dokumentu!


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.1395321887.txt.gz · Poslední úprava: 20. 03. 2014, 14.24 (upraveno mimo DokuWiki)