Am Montag, 14. Januar 2002 19:30 schrieben Sie:
On Mon, Jan 14, 2002 at 06:13:07PM +0100, Steffen Liebergeld wrote:
hier kommt das erste kleine C++ Problem für diese Woche:
Willst Du C++ machen, oder C? Viele Teile Deines Programmes sehen aus eher wie C. Will nicht sagen, daß das verkehrt ist, aber es macht Dir eventuell das Leben unnötig schwer.
Naja, ich habe einfach die Funktionen aus den Manpages genommen. Aber deine Lösung sieht einfacher aus.
Ich möchte aus einer Datei eine Zahl einlesen. Also habe ich ersteinmal den Betreffenden Bereich der Datei in ein char Array geschrieben, was ja auch
{ char RAM[8];
Nun, ich habe das Gefühl, Du liest ein Zeichen zu viel ein. "char RAM[8]" schafft Dir ein Array von 8 Zeichen, also Index 0 bis 7. Du liest dann aber mit i von 0 bis i <= 8, also ist i irgendwann auch mal 8, und Du liest dann immer noch ein, also nach RAM[8], das gibt's aber nicht mehr. Glückssache, wenn das funktioniert:
upps
for(int i=0; i<=8; i++) { RAM[i] = fgetc(ptr); cout << RAM[i]; }
"Off by one" wird gern genommen ;-)
Hier ist mal eine Alternative:
#include <iostream> #include <fstream> #include <string>
using namespace std;
const string MEMFILE = "/proc/meminfo";
int main(int argc,char **argv) { int size = 0; string unit;
ifstream memfile(MEMFILE.c_str()); cout << MEMFILE << endl; // Ich nehme an, Du willst die Zeile mit MemTotal haben. // Da ich mir nicht sicher wäre, daß das immer an Position 166 // losgeht (bei mir z.B. nicht, weil ich mehr Speicher habe), würde // ich entweder bis Zeile 4 lesen und mich dann beginnen zu kümmern, // oder noch flexibler, ich würde so lange Worte lesen, bis ich // "MemTotal:" finde, und dann davon ausgehen, daß das nächste Wort // die Speichergröße ist. string current; while (memfile >> current) { if (current == "MemTotal:") { memfile >> size >> unit; break; } } if (!size) { cerr << "Offenbar kein Speicher vorhanden." << endl; exit(1); } cout << "Größe: " << size << " " << unit << endl; return 0;
}
Wenn ich mir das ansehe, überkommt mich die Gewissheit dass ein gutes Buch zum Thema nun wohl doch angebracht ist. Könnt ihr mir da ein besonders gutes empfehlen? Gibt es auch Bücher, wo Qt oder Gtk mit behandelt werden? Woher bekomme ich Dokumentation zu den Standartfunktionen (ausser "man xyz"). Ich bräuchte ein Buch, welches einen Einstieg vermittelt aber auch quasi Hilfe zur Selbsthilfe bietet, also kein stupides Abtippen von Tutorial - Anwendungen. Wenn man dann richtig tief ins Thema eintaucht wäre mir das auch recht.