Fscanf (jazyk C): Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
 
(8 medziľahlých úprav od 2 ďalších používateľov nie je zobrazených)
Riadok 14: Riadok 14:
 
==Podrobný popis funckie==
 
==Podrobný popis funckie==
  
Funkcia fscanf () sa používa na čítanie formátovaného vstupu zo súboru. Funguje to rovnako ako funkcia scanf (), ale namiesto čítania údajov zo štandardného vstupu číta údaje zo súboru. V skutočnosti je väčšina argumentov funkcie fscanf () rovnaká ako funkcia scanf (), okrem toho, že potrebuje ďalší argument, ukazovateľ súboru. Po ukončení táto funkcia vráti počet načítaných hodnôt a pri chybe alebo na konci súboru vráti EOF alebo -1.
+
Funkcia [[Fscanf (jazyk C)|fscanf]]() sa používa na čítanie formátovaného vstupu zo súboru. Funguje to rovnako ako funkcia [[Scanf (jazyk C)|scanf]](), ale namiesto čítania údajov zo štandardného vstupu číta údaje zo súboru. V skutočnosti je väčšina argumentov funkcie [[Fscanf (jazyk C)|fscanf]]() rovnaká ako funkcia [[Scanf (jazyk C)|scanf]](), okrem toho, že potrebuje ďalší argument, ukazovateľ súboru. Po ukončení táto funkcia vráti počet načítaných hodnôt a pri chybe alebo na konci súboru vráti '''EOF'' alebo -1.
  
 +
==Parametre==
 +
;''stream'': Toto je pointer na objekt FILE, ktorý identifikuje tok.
  
==Parametre==
+
;''format'': Formát vstupných dát. Akýkoľvek biely znak oddeľuje hodnoty (rovnako aj pri reťazcoch). Ak chcete vedieť viac o formátovaní, prejdite na stránku [[Scanf (jazyk C)|scanf]].
*stream - Toto je pointer na objekt FILE, ktorý identifikuje tok.
+
'''Tvar formátu:''' ''%[*][šírka][dĺžka]formátovací znak'' (''[]'' označujú, že daný špecifikátor je voliteľný)
  
*tvar formatu - [=% [*] [width] [modifikátory] type =],
+
;''Dodatočný argument'': V závislosti na stringu môže funkcia obsahovať postupnosť ďalších argumentov, z ktorých každý obsahuje jednu hodnotu namiesto každého %-tag špecifikovaného v parametri formátu (ak existuje). Mal by existovať rovnaký počet týchto argumentov ako počet %-tag, ktoré očakávajú hodnotu.
  
{| class="wikitable"
+
==Návratová hodnota==
! Argumenty !! Popis
+
Táto funkcia vráti počet úspešne priradených vstupných položiek, ktoré môžu byť menšie, ako je stanovené, alebo dokonca nulové, v prípade skorého zlyhania.
|-
 
|*|| Toto je voliteľná  hviezdička, ktorá označuje, že dáta sa majú čítať z toku, ale ignorovať. Nie sú uložené v zodpovedajúcom argumente.
 
|-
 
|width||
 
Určuje maximálny počet znakov, ktoré sa majú pri aktuálnej operácii čítať.
 
|-
 
|modifikátory||
 
Určuje veľkosť odlišnú od int (v prípade d, i a n), alebo float (v prípade e, f ag) pre údaje označené znakom zodpovedajúce dodatočným argumentom
 
|-
 
|type||Znak špecifikujúci typ údajov, ktoré sa majú čítať a ako sa očakáva ich čítanie.
 
|-
 
  
 +
==Príklad==
 +
<source lang="c" line>
 +
#include <stdio.h>
  
 +
int main (){
 +
    char str [80];
 +
    float f;
 +
    FILE *subor;
  
{| class="wikitable"
+
    subor = fopen ("myfile.txt","w+");          //otvorenie súboru
! Typ !! Vstup !! Typ argumentu
+
    fprintf (subor, "%f %s", 3.1416, "PI");      //zapísanie do súboru
|-
+
    rewind (subor);                              //vráti kurzor na začiatok
| c || Jeden znak: Číta nasledujúci znak. Ak je zadaná šírka odlišná od 1, funkcia načíta znaky šírky a uloží ich do po sebe idúcich umiestnení poľa odovzdaných ako argument. Na konci nie je žiadny nulový char || *char
+
    fscanf (subor, "%f", &f);                    //načítanie zo súboru
|-
+
    fscanf (subor, "%s", str);                  //načítanie zo súboru
| d ||
+
    fclose (subor);                              //zatvorenie súboru
Desatinné celé číslo: Číslo, ktorému prípadne predchádza znak + alebo - || int*
+
    printf ("Precital som: %f and %s \n",f,str); //vypísanie načítaného textu zo súboru na obrazovku
|-
+
    return 0;
| e, E, f, g, G || desatinné číslo, ktoré obsahuje desatinné miesto, prípadne predchádzajúce znamienko + alebo - || *float
+
}
|-
+
</source>
| o || Osmičkové celé číslo || *int
+
''Výstup:''
|-
+
Precital som: 3.141600 and PI
| s || Reťazec znakov. Týmto sa budú čítať nasledujúce znaky, kým sa nenájde medzera || *char
 
|-
 
| u || Celé číslo bez znamienka || *unsigned int
 
|-
 
| x, X | Hexadecimálne číslo || *int
 
|-
 

Aktuálna revízia z 23:17, 19. máj 2020

Rozdelenie funkcií jazyka C podľa knižníc, v ktorých sú definované
<ctype.h> <limits.h> <stdio.h> <stdlib.h> <math.h> <string.h> <time.h>

isalnum
isalpha
isdigit
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit

printf
scanf
getc
putc
getchar
putchar
fprintf
fscanf
fgetc
fputc
fopen
fclose
feof

system
malloc
qsort
rand
srand
atoi
atol
atof
itoa
div
abs
labs

pow
fabs
exp
log
log10
sqrt
ceil
sin
cos

strlen
strcmp
strchr
strcpy
strstr
strcat
strncat

clock
time

Funkcia fscanf

knižnica

stdio.h

popis

Načíta dáta zo súboru


Úplný funčný prototyp

int fscanf(FILE *stream, const char *format, ...)

Podrobný popis funckie

Funkcia fscanf() sa používa na čítanie formátovaného vstupu zo súboru. Funguje to rovnako ako funkcia scanf(), ale namiesto čítania údajov zo štandardného vstupu číta údaje zo súboru. V skutočnosti je väčšina argumentov funkcie fscanf() rovnaká ako funkcia scanf(), okrem toho, že potrebuje ďalší argument, ukazovateľ súboru. Po ukončení táto funkcia vráti počet načítaných hodnôt a pri chybe alebo na konci súboru vráti 'EOF alebo -1.

Parametre

stream
Toto je pointer na objekt FILE, ktorý identifikuje tok.
format
Formát vstupných dát. Akýkoľvek biely znak oddeľuje hodnoty (rovnako aj pri reťazcoch). Ak chcete vedieť viac o formátovaní, prejdite na stránku scanf.

Tvar formátu: %[*][šírka][dĺžka]formátovací znak ([] označujú, že daný špecifikátor je voliteľný)

Dodatočný argument
V závislosti na stringu môže funkcia obsahovať postupnosť ďalších argumentov, z ktorých každý obsahuje jednu hodnotu namiesto každého %-tag špecifikovaného v parametri formátu (ak existuje). Mal by existovať rovnaký počet týchto argumentov ako počet %-tag, ktoré očakávajú hodnotu.

Návratová hodnota

Táto funkcia vráti počet úspešne priradených vstupných položiek, ktoré môžu byť menšie, ako je stanovené, alebo dokonca nulové, v prípade skorého zlyhania.

Príklad

 1 #include <stdio.h>
 2 
 3 int main (){
 4     char str [80];
 5     float f;
 6     FILE *subor;
 7 
 8     subor = fopen ("myfile.txt","w+");           //otvorenie súboru
 9     fprintf (subor, "%f %s", 3.1416, "PI");      //zapísanie do súboru
10     rewind (subor);                              //vráti kurzor na začiatok
11     fscanf (subor, "%f", &f);                    //načítanie zo súboru
12     fscanf (subor, "%s", str);                   //načítanie zo súboru
13     fclose (subor);                              //zatvorenie súboru
14     printf ("Precital som: %f and %s \n",f,str); //vypísanie načítaného textu zo súboru na obrazovku
15     return 0;
16 }

Výstup:

Precital som: 3.141600 and PI