Archiv verlassen und diese Seite im Standarddesign anzeigen : funktion fgets, funkt wie ?
was stimmt da nicht ?
#include <stdio.h>
File *datei;
char *buffer;
char *buffer2;
int n=8;
int main(int argc, char *argv[])
{buffer=fgets(buffer2,n,datei);}
Bitte lern doch erstmal die File High-Level I/O bzw. allg. Grundlagen von C, bevor Du solche Fragen stellst, auf die in einem anderen, ebenfalls von dir eröffneten Thread, schon beantwortet wurden. Danke
1. welches high level file?
2. darauf wurde nirgends geantwortet
The Ripper
21-10-2002, 10:55
am besten informierst du dich über die high-level file-e/a auf http://www.pronix.de/ckurs/ckurs79.html
Bei deinem Code-Ausschnitt sehe ich auf Anhieb drei Fehler,
1. (Zeile 2) FILE statt File
2. Es wurde keine Datei geöffnet (-> fopen())
3. wenn n=8, muss dein puffer (=buffer2) platz für 8 bytes bieten, ihm wurde aber noch kein Speicher zugewiesen
der zweite buffer (ich meine hier die variable "buffer") ist eigentlich kein puffer, sondern nur ein zeiger auf das erste element des puffers oder NULL im falle eines fehlers (man 3 fgets)
hab dank
aber fgets ist doch so definiert: fgets( char *c, int size, FILE *stream);
wieso klappt das bloß so: char c[size];
und nicht so char *c[]
es steht ja mit * in der deklaration
:confused:
The Ripper
21-10-2002, 19:16
char *x[] ist ein zeiger auf ein array von chars und entspricht char **, char[size] ist ein array von bytes (genaugenommen ein zeiger auf das erste element des arrays....) und entspricht char*, also dem was in der deklaration von fgets() steht.
was heisst das jetzt praktisch?
wenn du gern einen puffer statischer grösse hättest, dann deklarier ihn so:
char buffer[size];
im zusammenhang mit datei e/a ist das wohl mit abstand die meistgenutzte methode
falls es aber unbedingt ein dynamischer puffer sein soll, dann deklarier ihn mit
char *buffer;
und weise ihm mit
buffer = malloc(size);
speicher zu (dieser muss später wieder freigegeben werden)
falls du oben nur bahnhof verstehst, seist du wieder auf
www.pronix.de verwiesen:
Arrays und Strings (Strings sind in C arrays, wenn du das nicht wusstest lies bitte ab kapitel 1 :)) (http://www.pronix.de/ckurs/ckurs49.html)
Arrays und Zeiger (http://www.pronix.de/ckurs/ckurs57.html)
Dynamische Speicherverwaltung (http://www.pronix.de/ckurs/ckurs65.html)
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.