Kurz programování v C/Knihovny

Z Wikiknih

Samotný jazyk C obsahuje pouze příkazy pro řízení běhu programu. Další funkce můžeme buď sami definovat pomocí assembleru, nebo se odkázat na knihovny které které definice těchto funkcí již obsahují. Protože předpokládáme že jste začátečníci, budeme upřednostňovat druhou možnost a assembleru se budeme vyhýbat.

Knihovnu vložíme pomocí syntaxe

#include <stdio.h>

Tato ukázka zajistí definici všech funkcí v knihovně stdio.h Pokud zapomeneme knihovnu takto vložit, kompilátor nebude funkce znát a bude hlásit že nejsou definovány.

Přehled knihoven najdete ve wikiknize Knihovny C. Knihovny C a C++ jsou velmi podobné - funkce v knihovnách C se obvykle nachází také v knihovnách C++.

Musíme si ovšem uvědomit, že všechno co v C děláme pomocí knihovních funkcí lze udělat i bez nich, i když pak kód nebude zrovna dvakrát přehledný protože budeme často vkládat Assembler. Funkce lze totiž definovat buď z volání jiných funkcí, nebo z assembleru. Pro demonstraci uvádíme programový kód knihovní funkce putch() která vytiskne na obrazovku jeden znak.

void putch(char s){
  if((s!='\r') && (s!='\n') && (s!='\t') && (s!='\b')){
    _AL = 0;
    _CX = 1;
    _BH = 0;
    _BL = TEXT_COL;
    _AH = 0x09;
    __int__(0x10);
  }
  _AL = s;
  _AH = 0x0e;
  _BL = 0x07;
  __int__(0x10);
}

Patří mezi ty nejnižší, takže obsahuje velké množství Assembleru. Dále si popíšeme související funkci puts, která vytiskne řetězec znaků.

void puts(const char *str){
  int i;
  for(i=0 ; str[i]!='\0' ; i++){
    putch(str[i]);
  }
}

Funkce je o něco vyšší - neobsahuje Assembler ale pouze volá další funkce. Rozhodně to ale neznamená že jsou méně důležité - výrazně ulehčují práci. Pokud si nechcete ulehčovat práci, můžete zkusit programovat v Assembleru.