Knihovny C/printf a scanf

Z Wikiknih

Tato stránka popisuje funkce pro formátovaný vstup a výstup knihovny stdio.h.

Přehled znaků[editovat | editovat zdroj]

Znak Slovo Význam
%c char Znak
%s char* Řetězec
%d int Celé číslo desítkové soustavy (0-9)
%o int Celé číslo osmičkové soustavy (0-7)
%x int Celé číslo šestnáctkové soustavy (0-f)
%X int Celé číslo šestnáctkové soustavy (0-F)
%f float Desetinné číslo (0.00-9.99)
%d double Desetinné číslo (0.0000-9.9999)

printf[editovat | editovat zdroj]

Slouží pro formátovaný výstup. Funkce vrací počet znaků které vypsala. Příklad:

printf("Vypsany text\n");
vypsano1=printf("Cislo: %d \n",cislo);
vypsano2=printf("Cislo osmickove: %o \nDruhe cislo sestnactkove: %X \n",cislo,cislo2);
printf("Bylo vypsano celkem %d znaku.",vypsano1+vypsano2);
  • %d bude nahrazeno proměnnou cislo
  • %o bude nahrazeno proměnnou cislo, vypíše se ale v osmičkové soustavě
  • %X bude nahrazeno proměnnou cislo2, vypíše se ale v šestnáctkové soustavě
  • do proměnné vypsano je uložen počet znaků vypsaných prvním příkazem

Takže bude vypsáno:

Vypsany text
Cislo: 10
Cislo osmickove: 12
Druhe cislo sestnactkove: 1E
Bylo vypsano celkem 62 znaku.

scanf[editovat | editovat zdroj]

Slouží pro formátovaný vstup a používá se podobně jako printf. Vrací počet získaných hodnot. Následující příklad získá z klávesnice dvě celá čísla a vypíše patřičný výstup:

printf("Zadejte prosim dve cela cisla oddelene mezerou: ");
ziskano=scanf("%d %d",&cislo1,&cislo2);
if(ziskano==2){
 printf("Cislo 1: %d\n",cislo1);
 printf("Cislo 2: %d\n",cislo2);
}else{
 printf("Nezadali jste 2 cela cisla oddelene mezerou!");
}

fprintf a fscanf[editovat | editovat zdroj]

Slouží pro formátovaný vstup a výstup datového proudu. Od funkcí printf a scanf se liší pouze uvedením datového proudu.

char retezec[20]="bla";
FILE *proud;
proud=fopen("soubor.txt","w");
if(proud!=NULL){
 fprintf(proud,"Bla %s\n",retezec);
}

Tento příklad zapíše do souboru soubor.txt text "Bla bla"

char retezec[100];
FILE *proud=fopen("soubor.txt","r");
if(proud==NULL){
 printf("Nepodarilo se otevrit soubor soubor.txt!");
}else{
 fscanf(proud,"%s",&retezec);
 printf("soubor.txt: %s",retezec);
}

Zajímavá ukázka na konec[editovat | editovat zdroj]

A tento zase vypíše obsah souboru soubor.txt. Na konec si napíšeme prográmek podobný DOSovému příkazu TYPE, který navíc budeme moci použít i pro klasické otevírání souborů:

# include <stdio.h>
int main(int pocetparametru, char **parametr){
 if(parametr[1]==NULL){
  printf("Nebyl zadan soubor pro vypsani!");
 }else{
  char retezec[100];
  FILE *proud=fopen(parametr[1],"r");
  if(proud==NULL){
   printf("Nepodarilo se otevrit soubor %s!",parametr[1]);
  }else{
   fscanf(proud,"%s",&retezec);
   printf("%s",retezec);
  }
 }
 scanf(" ");
 return 0;
}

Soubor můžete v tomto programu otevřít v příkazovém řádku například následujícím příkazem:

program soubor.txt

Pod Windows můžete jednoduše přetáhnout textový soubor na ikonu programu , použít nabídku Otevřít v programu, nebo dokonce program asociovat s určitým typem souborů. (pod Linuxem netestováno, možná funguje)