Nathanael Schweers schrieb:
int f;
/* du brauchst kein int, sondern ein (FILE *). int ist für file
deskriptoren, fgets und fopen aber benutzen zeiger auf FILE (ist ein
wrapper um filedeskriptoren, da ist sogar ein puffer mit drin). */
Ah ja, macht sinn. Das mit * zeigt dann auf eine adresse wo die daten
dann abgelegt sind, wobei mich bei einer variablen die adresse ja nicht
interessiert.
in perl hätt ich ja ein filehandle, von daher versteh ich schon warum
int völlig falsch ist.
Hab ich das halbwegs richtig verstanden?
char Text[600];
char read_file(char *file_name) {
/* du willst vermutlich nicht "char", sondern "char *" zurückgeben*/
hier im grunde das selbe, das was die funktion zurück gibt wird in der
adresse xy gespeichert, ich will also nur die adresse wissen wo ich dann
die daten finde. warum das so ist ist mir zwar völlig unklar, ich nehms
aber mal so hin.
f = fopen(file_name,"r");
while( fgets(Text, sizeof(Text), f) !=0 )
/* was machst du da? das sieht so aus als würdest du solange fgets !=0
zurückgibt die datei schließen, und das ganze auch noch in den immer
gleichen puffer schreiben (die alten daten gehen also verloren). */
Mein got ja, jetzt raff ichs aber erst, das fclose(file_name) gehört ja
noch zur while schleife.
; hab ich völlig übersehn.
fclose(file_name);
return Text;
/* return Text; wird vermutlich nichtmal übersetzt, da von (char *)
nach char konvertiert wird. */
Das versteh ich nun nicht mehr, mal angenommen ich scheibe die daten in
Text, geb ich dann mit return Text nicht die daten wieder aus? müsst ich
*Text zurück geben, also die adresse wo die daten liegen?
in perl kann ich einfach:
$text = "hallo";
return $text;
machen, und die funktion gibt hallo zurück
bei der printf Anweisung, wofür ist %s %c %l und was weis ich was es
da noch gibt, habs erst mit %s versucht, dann hab ich gedacht ok ist
ja nen char versuchstes mit %c :)
siehe "man 3 printf" oder "man 3p printf" dazu.
%s sagt printf dass hier ein string reinkommt. %c ein zeichen, %l steht
für "long". Davon gibt's ne menge mehr, z.b. auch für floating point.
Ok, hab ich kapiert.
Perl ist wesendlich einfacher :)
Perl ist auf ne andere art obskur ;)
Hmm, ich komm da eigendlich gut mit zurecht.
Aber stimmt schon, C ist für neulinge nicht gerade einfach, und ich
finde dass die standard bibliothek es einem neuling nicht gerade
einfacher macht.
Ich hatte c mal in der berufsschule, ist schon 15 Jahre her, das sah
dann so aus das der Lehrer die Tafel in 5 min vollgeschrieben hat, ich
war noch halbwegs interessiert aber all meine fragen konnt er mir nicht
beantworten, "weil das so ist" war seine standard Antwort, warum konnt
er mir in keinem fall erklären, nach 6 Monaten hab ich aufgegeben zu
fragen und wie alle anderen gewartet bis ich den lösungszettel bekomme
und hab einfach abgeschrieben.
Ich hoffe dass Ich dich nicht zu sehr verwirrt habe.
Geht so ;) ich hoffe ihr habt was zum lachen, weil ich mich so schwer
tue. :)
-sven-
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org