Unterschied zwischen scanf() und gets() in C (Codebeispiel)

藏色散人
Freigeben: 2019-03-25 15:00:33
Original
2940 Leute haben es durchsucht

Unterschied zwischen scanf() und gets() in C (Codebeispiel)

scanf()-Funktion

Wird zum Lesen von Eingaben (char, char) von der Standardeingabe (Tastatur) verwendet ) Zeichenfolge, numerische Daten).

Es wird verwendet, um Eingaben zu lesen, bis ein Leerzeichen, ein Zeilenumbruchzeichen oder ein Dateiende (EOF) auftritt.

Siehe zum Beispiel den folgenden Code:

#include <stdio.h> 
int main() 
{ 
    char str[20]; 
    printf("enter something\n"); 
    scanf("%s", str); 
    printf("you entered: %s\n", str); 
  
    return 0; 
}
Nach dem Login kopieren

Die Eingabe hier wird vom Benutzer bereitgestellt und die Ausgabe sieht wie folgt aus:

输入: Geeks for Geeks
输出: Geeks

输入: Computer science
输出: Computer
Nach dem Login kopieren

gets( ) Funktion

Wird zum Lesen von Eingaben von der Standardeingabe (Tastatur) verwendet. Es wird verwendet, um Eingaben zu lesen, bis ein Newline-Zeichen oder ein Dateiende (EOF) auftritt.

#include <stdio.h> 
int main() 
{ 
    char str[20]; 
    printf("enter something\n"); 
    gets(str); 
    printf("you entered : %s\n", str); 
    return 0; 
}
Nach dem Login kopieren

Hier wird die Eingabe vom Benutzer wie folgt bereitgestellt

输入: Geeks for Geeks
输出: Geeks for Geeks

输入: Computer science
输出: Computer science
Nach dem Login kopieren
Nach dem Login kopieren

Der Hauptunterschied zwischen ihnen ist:

scanf() liest die Eingabe bis ein Leerzeichen, ein Zeilenumbruch oder ein Dateiende (EOF) auftritt. Während gets() die Eingabe liest, bis ein Zeilenumbruch oder ein Dateiende (EOF) auftritt, hört gets() nicht auf, die Eingabe zu lesen, wenn ein Leerzeichen auftritt wird angetroffen, behandelt das Leerzeichen jedoch als Zeichenfolge. scanf kann mehrere Werte unterschiedlicher Datentypen lesen, während gets() nur String-Daten abrufen kann.

Der Unterschied kann in tabellarischer Form wie folgt dargestellt werden:

SCANF()GETS()
当scanf()用于读取字符串输入时,它会在遇到空格,换行符或文件结束时停止读取当gets()用于读取输入时,它会在遇到换行符或End Of File时停止读取输入。
当它将空格视为字符串时,它不会停止读取遇到空格的输入。
它用于读取任何数据类型的输入它仅用于字符串输入。

So lesen Sie den vollständigen Satz des Benutzers mit scanf()

Tatsächlich können wir scanf() verwenden, um den gesamten String zu lesen. Beispielsweise können wir %[^n]s in scanf() verwenden, um den gesamten String zu lesen.

#include <stdio.h> 
  
int main() 
{ 
  
    char str[20]; 
    printf("Enter something\n"); 
  
    // Here \n indicates that take the input 
    // until newline is encountered 
    scanf("%[^\n]s", str);  
    printf("%s", str); 
    return 0; 
}
Nach dem Login kopieren

Der obige Code liest die Zeichenfolge, bis er auf ein Zeilenumbruchzeichen trifft.

Beispiel:

输入: Geeks for Geeks
输出: Geeks for Geeks

输入: Computer science
输出: Computer science
Nach dem Login kopieren
Nach dem Login kopieren

Verwandte Empfehlungen: „C-Tutorial

In diesem Artikel geht es um die Beziehung zwischen scanf() und gets() in C Die Unterschiede werden vorgestellt, ich hoffe, es wird Freunden in Not helfen!

Das obige ist der detaillierte Inhalt vonUnterschied zwischen scanf() und gets() in C (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
c
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage