Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

fprintf-fehlermeldung unter VC++ 6.0





Frage

Ich hab ein Problem, das ich einfach nicht in den Griff kriege: Bei der Anweisung: fprintf(f,"%d %s %lf\n",i,C,(double)(t2-t1)/CLOCKS_PER_SEC); bekomme ich immer einen Fehler, der lautet: Debug Assertion Failed! Programm: d:\tc\messwert.exe File: fprintf.c Line: 56 Expression: str != NULL blablabla... Alle Variablen bzw. Zeiger sind richtig deklariert, warum funktioniert die Anweisung nicht? Ich glaube, es liegt an dem double-Wert, den ich versuche zu schreiben! Aber wenn ich ein neues Programm erstelle, um probehalber mal einen ähnliches Wert in eine Datei zu schreiben, funktioniert es plötzlich! Ich verzweifel hier bald! Danke für jede Hilfe &Bye

Antwort 1 von Linuxe

Also ich würde dir mal empfehlen auch die Deklarationen der Variablen und Zeiger bzw. deren Inhalte reinzuschreiben, dann sollte sich das Problem leicht lösen lasse. Aber eigentlich sollte es auch für dich kein Problem sein, den Fehler mit dem Debugger zu finden. Guck einfach mal was in den Variablen bzw Zeigern drin steht evor du es an fprintf übergibst

Antwort 2 von abc123

@Omicron
Was für Compiler hast Du?
Ist die Variable C ein char* ?
Wird sie initialisiert?


Antwort 3 von miranda

Ich tippe auf einen in der Variablen "C" übergebenen NULL-Wert, bzw. zeigt der betreffende Pointer auf eine nicht mit dem 0-Character terminierte Speicherstelle.

Jedenfalls deutet die Fehlermeldung mit dem str!=NULL stark darauf hin.

Antwort 4 von CREe.K

hallo,
ich gehe mal davon aus, dass t1 u. t2 ganzzahlige Typen sind ala int / long. den Klammer cast sollte man grundsätzlich nicht verwenden (nur wenn es nicht mehr anders geht), stattdessen lieber einen static cast ala:
long t1, t2;
double d_t1, d_t2;


d_t1 = static_cast<double>(t1);
d_t2 = static_cast<double>(t2);
double erg = d_t1 / d_t2;

ist einfach sauberer.
Bezüglich der Fehlermeldung ist der angegebene Source Code nicht ausreichend, aber wie hier schon erwähnt, wird es irgendwas davon sein.

Gruß CREe.K

Antwort 5 von asok

Wie man der Datei fprintf.c (Zeile 56!) entnehmen kann, wird der Assert genau dann geworfen, wenn das erste Argument, also "f" NULL ist. Noch offensichtlicher gehts doch nicht mehr.

Antwort 6 von abc123

@asok
:-) Soviel zu Thema "...Alle Variablen bzw. Zeiger sind richtig deklariert..."

Antwort 7 von BennyBeagle

Deklariert vielleicht - aber man sollte die deklarierten Variablen auch richtig initialisieren.


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: