2016-04-08 5 views
-2

Ich las this Frage auf Quoren und lesen, dass Google diese Frage in einem seiner Interviews gefragt,Unterschied btw wird, scanf ('% s'), getline

Was die Unterschiede zwischen den Funktionen sind: scanf ("% s"), bekommt und getline

Kann jemand eine erschöpfende Liste und ihre Erklärung zur Verfügung stellen.

+0

http://stackoverflow.com/questions/314401/how-to-read-a-line-from-the-console-in-c –

Antwort

3

scanf("%s", &buffer); lesen Sie das nächste Token (jeder Platz/Ende der Zeile/Tabulatur wird das Token beenden) in Eingabe und speichern Sie es in der char *buffer. Sie sollten ein Format mit einer maximalen Puffergröße verwenden, zum Beispiel mit char buffer[10] sollten Sie scanf("%9s", buffer); verwenden, um maximal 9 Zeichen zu lesen.

gets() ist veraltet, verwenden Sie es nicht. Es liest eine vollständige Zeile, unabhängig von der Größe. Wenn also ein Programm mit Administratorrechten eine so schlechte Funktion hat, kann es von Hackern benutzt werden, um das System zu durchdringen. Dies war früher eine Taktik des Hackers. Bitte verwenden Sie stattdessen fgets(), es wird ein Parameter mit der Größe Ihres Puffers benötigt. fgets(buffer, 10, stdin); mit meinem vorherigen Beispiel. Bitte beachten Sie, dass die \n im Puffer enthalten ist, wenn die Zeile nicht mehr als 8 Zeichen umfasst.

getline() ist spezifischer, für was ich weiß, es ist eine c++ Funktion nur.

+3

['getline' ist in C verfügbar] (http: // man7 .org/linux/man-pages/man3/getline.3.html), obwohl es nicht Standard C ist. Es ist eine POSIX.1-2008 Funktion –

Verwandte Themen