Forum: PC-Programmierung Datei einlesen


von Gast (Gast)


Lesenswert?

hallo
ich lese eine datei ein, klappt soweit
hab definiert: char zeile[anz][puffer]. das problem ist wenn ich anz auf 
100000 setze stürzt das programm ab, weiss einer abhilfe. ist 
speicherreservierung begrenzt

danke schon ma

von Karl H. (kbuchegg)


Lesenswert?

Gast schrieb:
> hallo
> ich lese eine datei ein, klappt soweit
> hab definiert: char zeile[anz][puffer]. das problem ist wenn ich anz auf
> 100000 setze stürzt das programm ab, weiss einer abhilfe.

Ja. Setz es nicht auf 100000, sondern beschäftige dich damit, wie man 
Speicher zur Laufzeit reserviert und verwaltet.

Kann natürlich auch sein, dass du einen anderen Fehler im nicht 
gezeigten Programm hast.

> ist
> speicherreservierung begrenzt

Aus C Sicht nicht. Aber viele Compiler bzw. deren Runtimes haben ein 
oberes Limit, wie gross eine einzelne Allokierung maximal sein darf.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da Du nicht erwähnst, auf was für einem System mit was für einem
Compiler Du Dein "Programm" erstellst, kann ich nur auf die
alleswissende Glaskugel verweisen.

von Gast (Gast)


Lesenswert?

ich benutze als Entwicklungsumgebung DEV-C++ mit dem dazugehörigen 
Compiler, ich vermute jetzt einfach mal das das der gcc ist. will das 
aber jetzt erst nich dynamich machen, recht viel aufwand unter C

von Gast (Gast)


Lesenswert?

ach, einen anderen fehler gibt es nicht weil, es mit 1000 zeilen 
funktioniert.

von Karl H. (kbuchegg)


Lesenswert?

Gast schrieb:
> ach, einen anderen fehler gibt es nicht weil, es mit 1000 zeilen
> funktioniert.

Na dann :-)

von Karl H. (kbuchegg)


Lesenswert?

Gast schrieb:

> aber jetzt erst nich dynamich machen, recht viel aufwand unter C

Wer Omletts machen will, muss Eier zerschlagen.

von Klaus W. (mfgkw)


Lesenswert?

Wenn du es nicht besser machen willst, wirst du mit 1000 Zeilen oder
dem Absturz leben müssen.

Erstens: wenn es dir unter C zu mühsam ist (was ich verstehen kann),
gibt es auch noch C++, da ist es viel leichter.

Zweitens gab es hier erst vor ein paar Tagen schon mal das
Thema; das weiß ich zufällig noch, weil ich da ein Beispielprogramm
dafür gemacht habe.

Suchen kann auch mühsam sein, deshalb lieber gleich den Link:
Beitrag "Daten aus Datei einlesen und zeilenweise abespeichern"

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sollte das Riesen-Array als automatische Variable * deklariert werden, 
so ist der Programmabsturz kein Wunder, da der Stack, der dem Programm 
standardäßig zur Verfügung steht, dafür nicht ausreicht.

*) was das ist und bedeutet wird in Deinem C-Handbuch beschrieben. 
Lesen!

von Gast (Gast)


Lesenswert?

ja der c++ code gefällt mir besser, nur kann ich noch kein c++
ich hätte da ne frage, bei dem c++ code wird das array under ner liste 
gespeichert, nun frage ich mich wie kann ich da z.B auf z.B die 5 zeile 
zugreifen, einfach mit liste(0) oder gibts da was wie liste.element(0) 
oder so ähnlich

von Klaus W. (mfgkw)


Lesenswert?

Eine Liste ist eine Liste, und der Zugriff auf ein willkürliches
Element darin anhand der Position ist ineffizient.
Stattdessen macht es Sinn, mit Iteratoren die Liste entlangzulaufen
und die Daten sequentiell zu verarbeiten.

Braucht man einen solchen direkten Zugriff über Index, ist std::list
die falsche Wahl (oder der direkte Zugriif ist die falsche Wahl,
je nachdem). Dann würde man statt std::list eher std::vector nehmen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.