C C Datei Fangfrage?

Status
Für weitere Antworten geschlossen.

elektro2

Cadet 4th Year
Registriert
Feb. 2014
Beiträge
67
Hallo Zusammen :)

Habe ein Frage in einer Aufgabensammlung gefunden, die mich verrückt macht ....

Die Frage ist, welche Deklaration bezüglich f richtig ist.

Ich glaube, dass die alle falsch sind, weil die Gänsefüßchen fehlen.

Oder irre ich mich?

Code:
f = fopen( filename, "r" );


1.
FILE f;

2.
FILE *f;

3.
int f;

4.
struct FILE f;

5.
char *f;
 
Nummer 2 ist richtig. f ist der Name einer Variablen, da brauchts die Gänsefüßchen nicht.
Anstatt Hilfe übers Forum einzuholen, könntest Du auch einfach jede einzelne Lösungsmöglichkeit selbst ausprobieren.

EDIT: Oder googeln. Hier sind ist fopen ziemlich gut erklärt. Ansonsten gibts natürlich noch die API.
 
ahh ok du hast recht :)

man kann ja einfach

char *filename="text";

schreiben ;)
 
Es hilft übrigens auch sich klar zu machen, warum z.B. Lösung 1 nicht richtig ist.
FILE ist ein Struct. Wenn Du das instanziierst, bekommst Du keine Instanz zurück, sondern nur einen Pointer auf den Bereich im Speicher, an dem die Instanz liegt. Deshalb brauchst Du einen FILE-Struct-Pointer.

Anders wäre das, wenn im fopen im fiktiven Fall wirklich ein int zurück geben würde. int ist ein primitiver Datentyp.
 
Schau einfach hier:
http://www.tutorialspoint.com/c_standard_library/c_function_fopen.htm

Return Type ist wichtig, fopen gibt einen Pointer zurück.

Dann müsste man nur noch wissen was passiert wenn man auf Pointer zugreift, bzw. wie z.B. ein String funktioniert. Gelesen wird ab der Adresse alles, bis nicht ein Terminal Symbol kommt. Vergisst man dieses z.B. zu setzen, ließt C einfach weiter bis es nicht zufällig eines findet.

Zuletzt dann noch wie Buchstaben umgesetzt werden. Dies erfolgt über Zeichentabellen, wo jeder Buchstabe einer Zahl zugeordnet ist.

Was richtig ist kannst dir dann selbst denken ;)
 
Zuletzt bearbeitet:
mightysick schrieb:
Es hilft übrigens auch sich klar zu machen, warum z.B. Lösung 1 nicht richtig ist.
FILE ist ein Struct. Wenn Du das instanziierst, bekommst Du keine Instanz zurück, sondern nur einen Pointer auf den Bereich im Speicher, an dem die Instanz liegt. Deshalb brauchst Du einen FILE-Struct-Pointer.

Anders wäre das, wenn im fopen im fiktiven Fall wirklich ein int zurück geben würde. int ist ein primitiver Datentyp.

Völlig falsche Erklärung. Eine Funktion kann ohne Probleme eine Struktur zurück geben.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben