001
28.05.2009, 20:04 Uhr
0xdeadbeef
Gott (Operator)
|
Naja, du gibst jedes mal Buffer[250] aus. Ich kenne die Definition von Buffer nicht, vermute aber aufgrund der Zeile
C++: |
datei1.getline(Buffer, 250);
|
, dass es sich um einen char[250] handelt. Buffer[250] ist dann das Zeichen direkt hinter dem Ende des Buffers. Das bedeutet erstens, dass es durch die getline-Zeile nie verändert wird, und zweitens einen Buffer-Overflow - du liest etwas als Teil des Buffers, das nicht mehr zum Buffer gehört; unter Umständen sogar Speicher, der dir nicht gehört. Was dabei passiert, ist mehr oder weniger zufällig (nennt sich "undefiniertes Verhalten").
Wie dem auch sei, wenn du dir sicher sein kannst, dass in der Datei nur Zahlen stehen, wäre wohl etwas wie folgendes sinnvoll:
C++: |
#include <fstream> #include <vector>
// ...
std::ifstream in("punkte.txt"); int x; std::vector<int> zahlen;
while(in >> x) { zahlen.push_back(x); }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 28.05.2009 um 20:04 Uhr von 0xdeadbeef editiert. |