mikrocontroller.net

Forum: PC-Programmierung Datei einlesen


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Na dann :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:

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

Wer Omletts machen will, muss Eier zerschlagen.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.