Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » fehlerhaftes Programende bei C++ und fclose()

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.04.2009, 05:41 Uhr
~markusB
Gast


Lieber Mitleser,

ich stehe vor einem Raetsel und weiss noch nicht mal wie ich es beschreiben soll, wo ich eine Antwort finde und was genau falsch ist.
Ausserdem bin ich mir unsicher uder das Copyright des Programms und wuerde deshalb nur ungern das komplette Program posten.
Last not least bin ich kein Programierexperte . .

So, Du liest noch mit? Vielen Dank!
Ich benutze einen freien Bloodshed Compiler unter Windos Vista.

Was passiert ist folgendes:

Nach ein paar Mathematikoperationen und verschiedenen Datei-Schreib- und Lesezugriffen
(leider nutze ich, da ich als Amateur verschieden Bausteine zusammenkopiert habe open, close fopen und fclose recht wild durcheinander, natuerlich nie am gleichen file) will ich einfach nur das Program fehlerfrei beenden.


Die letzen drei Zeilen meines Programms sehen folgendermassen aus:

//fclose(inputFile);
Sleep (2000);
}

Lass ich das Programm in der obigen Version laufen laeuft es einmal fehlerfrei und meldet sonst immer einen Fehler (NACH dem 2 Sekunden-Sleep)
Aendere ich ab:

fclose(inputFile);
Sleep (2000);
}

Stuerzt es immer ab nach dem Sleep.

Fuer jede Hilfe bin ich dankbar!
(ich hatte mich nie daran gestoert, weil es ja vorher alle Operationen richtig abschliesst und auch die Files richtig schreibt, aber ich muss es jetzt praesentieren und dieser Fehler wirkt unporffesionell - was ich ja allerdings auch bin)


Viele liebe Gruesse,
Markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.04.2009, 08:11 Uhr
~f.-th.
Gast


Hast du das Programm schon mal auf der Konsole aufgerufen?
Bloodshed Compiler - welcher ist das? Kenne nur eine Bloodshed IDE

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.04.2009, 11:35 Uhr
~MarkusB
Gast


Lieber f.-th,


Zitat von ~f.-th.:
Hast du das Programm schon mal auf der Konsole aufgerufen?
Bloodshed Compiler - welcher ist das? Kenne nur eine Bloodshed IDE

MfG f.-th.


Der compiler ist von www.bloodshed.net
Version 4.9.9.2

Von Konsole starten, heisst das mit double-clicky im Dateisystem?

Das hat etwa das Gleiche Ergebnis wie oben beschrieben . .

Mit fclose gibt es immer einen Programmabbruch,
mit Auskommentieren kann ich das Programm 1x fehlerfrei ausfuehren . .

Je mehr darueber nachdenke desto weniger versteh ich es . .
Wenn ich eine .exe-datei 2x ausfuehre erwarte ich doch, dass sie 2x entweder funktioniert oder 2x failed . . aber nicht mal so und dann immer anders . .

Vielen Dank fuer Deine Antwort schon mal,

Markus
(sehr verwirrt)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.04.2009, 15:17 Uhr
0xdeadbeef
Gott
(Operator)


Es ist durchaus vorstellbar, dass der Fehler an einer ganz anderen Stelle liegt. Möglich wäre zum Beispiel ein Buffer-Overflow, bei dem die Rücksprungadresse der main-Funktion überschrieben wird. Vielleicht solltest du das ganze mal mit -fstack-protector-all kompilieren.

Ich kann allerdings ohne Code und ohne Fehlermeldung nur raten.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.04.2009, 19:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von 0xdeadbeef:
Es ist durchaus vorstellbar, dass der Fehler an einer ganz anderen Stelle liegt. Möglich wäre zum Beispiel ein Buffer-Overflow, bei dem die Rücksprungadresse der main-Funktion überschrieben wird. Vielleicht solltest du das ganze mal mit -fstack-protector-all kompilieren.



das würde ich allerdings auch vermuten,

würde vermuten das "inputFile" eben kein gültiges Filehandle mehr darstellt, weil die adresse des zeigers wohl mit müll überschrieben wurde.


Zitat von 0xdeadbeef:

Ich kann allerdings ohne Code und ohne Fehlermeldung nur raten.


das auch.

ich vermute mal, das jeglicher code nicht sooo copyright sein kann als das man davon stellen hier einstellen kann, denn glaub kaum das größere firmen (wo es auf sowas ankommt) mit bloodshed arbeiten
--
class God : public ChuckNorris { };

Dieser Post wurde am 17.04.2009 um 19:00 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.04.2009, 20:56 Uhr
~f.-th.
Gast


Der Compiler im Bloodshed 4.9.9.2 müsste ein MinGW sein Version 3.4.irgendwas ?
Das kannst du prüfen in dem du auf Kommandozeile den MinGW aufrufst.

Hier zu nachlesen:
www.bloodshed.net/devcpp.html

Bloodshed ist die IDE.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.04.2009, 00:17 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von ~MarkusB:
Von Konsole starten, heisst das mit double-clicky im Dateisystem?

Nein, das heisst klick auf Start/Programme/Zubehör/Eingabeaufforderung
Dann evtl. in das richtige Verzeichniss (den richtigen Ordner) wechseln und den Namen der *.exe Datei von Hand eintippen und die ENTER-Taste drücken.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.04.2009, 03:23 Uhr
~MarkusB
Gast


Liebe Mitleser!

Ich bin sher begeistert . .

Eure Antwort hat mit wirklich weitergeholfen!!!

Ich denke, ich verstehe jetzt ungefaehr, was passiert. .
(Mal schauen, muss noch weiter testen)

Denn wenn ich diese Zeile rausnehme:

count[100*dummy_q+dummy_t] += 1;


funkioniert das Programm fehlerfrei . .
D. h. um genau zu sein ist es fehlerfrei, aber funkioniert nicht mehr, aber das bekomm ich schon noch hin!

Soweit ich das sehe gibt es daraus zwei Moeglichkeiten:
Entweder shcreibe ich ueber die Grenzen des arrays hinaus, oder ich zaehle zu weit in einer Zelle . .

Vielen Dank fuer Eure Hilfe!!!

Euer Markus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: