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 tzv. Č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í:

  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 zkuteč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.");
     system("PAUSE");
     return 1;
  }
 
  fread(type, 1, 2, file);
  if (type[0]!='B' || type[1]!='M'){
     printf("Neni bitmapa.");
     system("PAUSE");
     return 1;
  }
 
  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.");
     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 typeu sedí
     printf("Neni bitmapa.");
     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 (?add = 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.

* * funcke 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); Pokud tedy napíšeme fread(type, 1, 2, file); program umístí do každého políčka proměnné typeu 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. A TEĎ SRSLY. KDO TO VYMYSLEL? DOKUWIKI? VŽDYŤ SE TU ANI POŘÁDNĚ NEDAJÍ DĚLAT ODSTAVCE!

strprg/projekty/bmp.1395262400.txt.gz · Poslední úprava: 19. 03. 2014, 21.53 autor: hexorr