In C-Sprache, scanf() Die Funktion wird verwendet, um formatierte Eingaben von stdin zu lesen. Es gibt die gesamte Anzahl der darin geschriebenen Zeichen zurück, andernfalls wird ein negativer Wert zurückgegeben.
Syntax:
int scanf(const char *characters_set)>
Zeitkomplexität: An)
Hilfsraum: O(n) wobei n die Länge der Eingabe ist.
Viele von uns kennen die traditionelle Verwendung von Scanf. Nun, hier sind einige der weniger bekannten Fakten
Python-Programme
Wie liest man nur einen Teil der Eingabe, die wir benötigen?
Stellen Sie sich beispielsweise einen Eingabestream vor, der nur Zeichen gefolgt von einer Ganzzahl oder einer Gleitkommazahl enthält. Und wir müssen nur diese Ganzzahl oder Gleitkommazahl scannen.
Beispiel:
Input : 'this is the value 100', Output : value read is 100 Input : 'this is the value 21.2', Output : value read is 21.2>C
// C program to demonstrate that // we can ignore some string // in scanf() #include int main() { int a; scanf('This is the value %d', &a); printf('Input value read : a = %d', a); return 0; } // Input : This is the value 100>
Nehmen wir nun an, wir kennen die vorangehenden Zeichen nicht, wissen aber sicher, dass der letzte Wert eine ganze Zahl ist. Wie können wir den letzten Wert als Ganzzahl scannen?
Die folgende Lösung funktioniert nur, wenn die Eingabezeichenfolge keine Leerzeichen enthält. Zum Beispiel,
Eingang
'blablabla 25'>C
// C program to demonstrate use of *s #include int main() { int a; scanf('%*s %d', &a); printf('Input value read : a=%d', a); return 0; }> Ausgabe
Input Value read : 25>
Erläuterung : Das %*s in scanf wird verwendet, um bei Bedarf einige Eingaben zu ignorieren. In diesem Fall wird die Eingabe bis zum nächsten Leerzeichen oder Zeilenumbruch ignoriert. Wenn Sie %*d schreiben, werden Ganzzahlen bis zum nächsten Leerzeichen oder Zeilenumbruch ignoriert.
Allgemeine Verwendung von scanf( ):
C // C program to demonstrate general use of scanf() #include int main() { int a; scanf('%d', &a); printf('a = %d', a); return 0; }> Eingang
2>
Ausgabe
a = 2>
Die obige Tatsache scheint auf den ersten Blick kein nützlicher Trick zu sein. Um seine Verwendung zu verstehen, sehen wir uns zunächst fscanf() an.
fscanf-Funktion in C
Haben Sie genug von der umständlichen Syntax beim Lesen von Dateien? Nun, fscanf kommt zur Rettung. Diese Funktion wird verwendet, um die formatierte Eingabe aus dem angegebenen Stream in der Sprache C zu lesen.
10 von 40
Syntax:
int fscanf(FILE *ptr, const char *format, ...)>
fscanf liest aus einer Datei, auf die der FILE-Zeiger (ptr) zeigt, anstatt aus dem Eingabestream.
Rückgabewert: Bei erfolgloser Ausführung wird Null oder EOF zurückgegeben. Andernfalls wird die Anzahl der erfolgreich zugewiesenen Elemente zurückgegeben.
Zeitkomplexität: An)
Hilfsraum: O(n) wobei n die Länge der Eingabe ist.
Beispiel 1: Betrachten Sie die folgende Textdatei abc.txt
NAME AGE CITY abc 12 hyderabad bef 25 delhi cce 65 bangalore>
Jetzt möchten wir nur das Stadtfeld der obigen Textdatei lesen und alle anderen Felder ignorieren. Eine Kombination aus fscanf und dem oben genannten Trick erledigt dies problemlos
C // C Program to demonstrate fscanf #include // Driver Code int main() { FILE* ptr = fopen('abc.txt', 'r'); if (ptr == NULL) { printf('no such file.'); return 0; } /* Assuming that abc.txt has content in below format NAME AGE CITY abc 12 hyderabad bef 25 delhi cce 65 bangalore */ char buf[100]; while (fscanf(ptr, '%*s %*s %s ', buf) == 1) printf('%s
', buf); return 0; }> Ausgabe
CITY hyderabad delhi bangalore>
Beispiel 2: Betrachten Sie die folgende Binärdatei program.bin
n1 n2 n3 1 5 6 2 10 11 3 15 16 4 20 21>
Um alle Werte von n1, n2 und n3 des Bins zu lesen, verwenden wir fscanf()
C #include #include struct threeNum{ int n1, n2, n3; }; int main(){ int n; struct threeNum num; FILE *fptr; if ((fptr = fopen('program.bin','rb')) == NULL){ printf('Error! opening file'); // Program exits if the file pointer returns NULL. exit(1); } for(n = 1; n < 5; ++n){ fread(&num, sizeof(struct threeNum), 1, fptr); printf('n1: %d n2: %d n3: %d', num.n1, num.n2, num.n3); } fclose(fptr); return 0; } //Code submitted by Susobhan Akhuli> Ausgabe
n1: 1 n2: 5 n3: 6 n1: 2 n2: 10 n3: 11 n1: 3 n2: 15 n3: 16 n1: 4 n2: 20 n3: 21>
Sehen wir uns die Unterschiede in tabellarischer Form an:
| scanf() | fscanf() | |
| 1. | Es wird zum Lesen der Standardeingabe verwendet. | Diese Funktion wird verwendet, um Eingaben aus einer Datei zu lesen |
| 2. | Seine Syntax ist -: scanf(const char *format, …) | Seine Syntax ist -: fscanf(FILE *stream, const char *format, …) Was ist Prolog? |
| 3. | Es erfordert Formatspezifizierer, um Eingaben eines bestimmten Typs zu akzeptieren. | Es liest den Stream in Form eines Bytes |
| 4. | Es werden drei Parameter benötigt: Leerzeichen, Nicht-Leerzeichen, Formatbezeichner | Es ist in der Header-Datei #include definiert |