idee gesucht: für einlesen in mehrdimensionalen array
-
hi @ll!
ich hab nen problem, beim einlesen einer datei in einen array mit ansi c...
Problem:
ich hab mit php eine funktion geschrieben, welche eine datei anlegt und dort werte in der form:1:Hilfe 1
2:Hilfetext 2
.
.
.
abspeichert. nun möchte ich diese datei per c programm auslesen aber krieg es irgendwie nicht auf die reihe die zeilen in einen array einzulesender array soll eig. in der form Array[Nr][Text] angelegt werden. hab hier mal bissl gesucht, und bin auf die befehle fgets und sscanf gestoßen, aber irgendwie kommt da nur müll mit kryptischen zeichen raus
! für ne idee wäre ich dankbar...
mfg frechna
-
Hallo,
naja das ist nicht so ganz einfach ohne ein paar tiefergehende Kenntnisse in C was Filehandling und dynamische Speicherverwaltung angeht, bzw. evtl. ADTs.
Such dir am besten ein paar Tutorials zum Thema Filehandling in C und guck dir auch was zu Arrays und Zeigern an.
Es sollte was die Dateiverwaltung angeht kein Problem für dich sein, das schnell zu lernen, da es php sehr ähnlich ist.
Also es ist halt ein bisschen blöd, dass du nicht weisst wieviel Einträge in der Datei sind, deswegen musst du das dynamisch machen, es sei denn du kannst von vornherein sagen, dass eine fest gelegte Anzahl nicht überschritten wird.
Musst du das unbedingt in C machen ? In C++ gehts ne Ecke einfacher und komfortabler.
-
naja nicht unbedingt... aber mit c++ hab ich noch nie gearbeitet... da geht das mit streams einfacher ? hmm sonst muss ich mir da mal nen anderes tutorial besorgen... das mit den zeigern hab ich mir schonmal angeguckt is ja alles recht verwirrend... da is das aber in php echt für DAU's gemacht, da geht das ja easy in nen array einzulesen
-
Hmm,
ja da ist ja auch alles dynamisch. Aber syntaxmäßig solltest du keine Probleme beim verstehen von C code bzw. C++ code haben. Ist wirklich sehr ähnlich. Und wenn du in PHP schon mal OO programmiert hast, kriegst das bischen streams auch auf die Reihe.Also in C++ würd ich dir zu nem std::vector statt nem Array raten.
Und std::string macht dir die Textarbeit wesentlich leichter.Alles was du dir mal angucken musst um ein gutes Stück weiter zu sein ist dieses Tutorial
http://www.c-plusplus.net/forum/viewtopic.php?t=39469Und evtl. hier http://www.roguewave.com/support/docs/sourcepro/stdlibref/vector.html
mal wegen std::vector nachschauen. Dann sollte es kein Problem sein.
-
Wenn du dennoch bei ANSI-C bleiben willst, dann solltest du dir mal malloc() und realloc() wegen dem dynamischen "Erstellen" deines Arrays. Dazu gibt es hier im Forum schon viele Beiträge, auch was zweidimensionale, dynamische Arrays angeht. Einfach mal die Suche einschalten ;).
-
Hallo,
noch eine Anmerkung. In deinem Fall muss doch dein Array garnicht 2 dimensional sein. Die erste Dimension hast du im Index.
-
vielen dank! ich werde mir mal malloc und das c++ faq zu gemüte führen und ma bissl probieren
danke erstmal!
-
prolog schrieb:
Hallo,
noch eine Anmerkung. In deinem Fall muss doch dein Array garnicht 2 dimensional sein. Die erste Dimension hast du im Index.
Wenn es in ANSI-C ist schon