Knihovny C/printf a scanf
Tato stránka popisuje funkce pro formátovaný vstup a výstup knihovny stdio.h.
Přehled znaků
editovatZnak | 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
editovatSlouží 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
editovatSlouží 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
editovatSlouží 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
editovatA 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)