Wofür steht "f" in C-Standardbibliotheksfunktionsnamen?

9

Wofür steht f im Namen von C-Standardbibliotheksfunktionen? Ich habe bemerkt, dass viele Funktionen einen f in ihrem Namen haben, und das macht für mich keinen Sinn.

Zum Beispiel: fgets , fopen , printf , scanf , sqrtf und so weiter.

    
Erik W 14.01.2015, 18:03
quelle

5 Antworten

41

Ihre Frage ist im Allgemeinen zu allgemein, aber ich kann einige Beispiele erklären.

  • fgets , fopen , fclose , ... - Die" f "steht für" Datei ". Diese Funktionen akzeptieren oder geben einen FILE * -Zeiger im Gegensatz zu einer Dateinummer zurück, wie es die POSIX-Funktionen tun.
  • printf , scanf , ... - Das" f "steht für" formatiert ". Diese Funktionen akzeptieren eine Formatzeichenfolge.
  • fprintf , fscanf - Dies ist eine Kombination der beiden oben genannten Punkte.
  • sinf , cosf , ... - Das" f "steht für float (zur Unterscheidung von double Alternativen). Beachten Sie, dass dies ziemlich gut zu Suffix-Gleitkommaliteralen mit f wie in 1.5f passt.
  • Schließlich, als Deduplizierer Punkte out , gibt es einige Namen wie free , floor oder setbuf (" set buffer "), wobei das" f "einfach als ein Zeichen der natürlichen Sprache erscheint.

Die Tradition der Vor- oder Nachsilben von Namen mit einzelnen Buchstaben, die den Typ der Argumente angeben, ist eine Notwendigkeit in C, die in C ++ durch Überladung obsolet geworden ist. Tatsächlich funktioniert das Überladen in C ++ dadurch, dass der Compiler diese Suffixe automatisch unter die Haube zu den generierten Symbolen durch einen Prozess namens name mangling .

    
5gon12eder 14.01.2015, 18:09
quelle
8

Das führende f bezieht sich auf den Typ, auf den die Funktion angewendet wird:

  • fgets : Verwenden Sie gets für eine FILE * handle anstatt nur für stdin
  • fopen : Öffnen Sie eine Datei und geben Sie sie als FILE * (anstelle eines Dateideskriptors, den das ursprüngliche open verwendet)
  • zurück

Das nachfolgende f bedeutet, dass es eine Formatierungszeichenfolge verwendet:

  • printf : Ausdruck gemäß dem Formatspezifizierer
  • scanf : entsprechend dem Format
  • eingelesen

Und kombiniert, erhalten Sie Dinge wie:

  • fprintf : Nach dem Format-Spezifizierer
  • auf einen bestimmten FILE * ausgeben

Wenn Sie Dinge wie die math.h -Funktionen betrachten, dann bezeichnet das nachfolgende f, dass die bestimmte Funktion auf Operanden vom Typ float wie folgt wirkt:

  • powf : Nimm den Exponenten von float s
  • powl : Nimm den Exponenten von long double s
randomusername 14.01.2015 18:08
quelle
5

Ein führender f steht für file , ein hinterer steht für formatted ; Beispielsweise wird sscanf verwendet, um s trings nach Werten in einem Muster zu durchsuchen, wie in einem Format angegeben, während fprintf formatierten Text in eine Datei druckt.

EDIT: Oh, und dann gibt es mathematische Funktionen von math.h , die Typ-Suffixe wie atanf haben werden, um die arcustangens für Float-Werte zu berechnen.

    
Marcus Müller 14.01.2015 18:07
quelle
4

Ich habe den Eindruck, dass für fgets und fopen das f für Datei steht.

Für printf und scanf Ich glaube, dass f für formatiert steht. Dies wird zumindest teilweise durch den Wikipedia-Artikel auf scanf unterstützt.

    
kjschiroo 14.01.2015 18:08
quelle
1

In Funktionen aus der stdio -Bibliothek steht der vorangehende f in Dingen wie fread , fprintf , fwrite usw. für 'Datei'. Das f am Ende der Funktionen wie printf und scanf steht für 'format'. Somit ist printf FORMATTED Drucken, was bedeutet, dass Sie die Dinge liek %d und %s darin verwenden können.

In mathematischen Funktionen bedeutet ein Suffix von f normalerweise float .

    
Gophyr 15.01.2015 18:16
quelle

Tags und Links