Christoph R. schrieb:
std::ofstream ofs(".\\data.txt);
komischer dateiname
Aber da steht irgendwas anderes in der Datei, nicht der Wert von der Variablen. Ich nehme an, dass ofstream eher für Zeichenketten gedacht ist.
da sollte eigentlich (als Zeichenkette) "123" in der Datei stehen.
Willst du den Wert 123 binär in die Datei schreiben, müsstest du das so machen:
char c = 123;
ofs.write(&c, 1);
ps: falsches Forum, gehört nach C++
Etwas, das sich im großen und ganzen wie std::vector<T> verhält (also im Wesentllichen konstante Zugriffszeiten und die Fähigkeit den Speicher bequem zu vergrößern [push_back usw]) gibt es natürlich auch in C. Üblich sind eben Zeiger und realloc.
Und ja, es gibt einige C-Bibliotheken, die ähnliche Ziele wie die STL verfolgen -- Du kannst Dir ja mal die glib (von GTK) angucken.
man könnte auch entweder den speicher immer wieder mit realloc erweitern (ist aber recht unschön, da es dann zu häufig benutzt werden muss)
oder man geht die datei zwei mal durch und schaut beim ersten durchlauf nach leerzeichen und zeilenvorschüben.
/bin/bash0R schrieb:
ganz recht, die l337 kiddies sind im anmarsch und werden bald deinen rechner infiltriert haben.
@ThumbsDown Es gibt kein entkommen.
Vor C99 muss man die Variablen nur den Code deklarieren (innerhalb einer Funktion), d.h. for(int i ... ist vor C99 nicht gültig. Ab C99 darf man das, aber du musst deinen Compiler mitteilen, dass der nach c99 kompilieren muss.
Danke Leute, werd mir mal zu genüge führen, wegen dem selber ausdenken, bin noch weit am Anfang, da gibts noch nicht soo viel was man machen könnte, da ja noch viel Wissen fehlt, hab aber schon einiges gemacht.
Das bewirkt ein "entleeren" des Tastaturpuffers bis zum '\n'.
Nope. Das Bewirkt gar nichts. fflush() ist nur für das entleeren von Ausgabe-Streams. Das flushen von Eingabe-Streams ist undefiniert (steht auch in der FAQ)
Und dann fällt mir noch auf, dass getchar() eigentlich eine int zurückliefert. Ihr benutzt aber eine char-variable. Das könnte zum Problem wenn man nachher vielleicht auf EOF prüfen möchte.
Jetzt noch was generelles: stdout ist meistens ein gepuffertet stream. Ihm eueren Fall ist der stream, da er mit einem Terminal (Dos-Fenster) verbunden ist, sogar line-gepuffert[1]. Das heißt, der stream wird entweder geflusht wenn ein new-line-character ('\n') geschrieben wird oder es explizit gefordert wird[2].
Ich würde sagen, dass die stdc-library eigentlich ungeignet ist ein benutzerfreundliches user-interface zu erstellen. Dafür gibt es libraries wie (n)curses
mfg
--
[1] schreckliche Übersetzung..
[2] zB mit fflush()
lorsch schrieb:
dev-c++
nur ne Randbemerkung: devc++ ist kein Compiler, sondern eine IDE, die standardmäßig den mingw benutzt zum Compilieren. Also dein Compiler ist mit höher Wahrscheinlichkeit den mingw
ein zeiger ist unnötig, am besten ist du hast in der struktur drei felder, z.B. "linkerAst", "rechterAst", "elterAst" vom typ int, die die id des jeweiligen knoten, sprich array-element, haben.