Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Ich erhalte folgende Fehlermeldung:
Debug Assertion Failed!
Program
...ges\textmetric\Debug\textmetric.exe
File f:\dd\vctools\crt_bld\self_x86\crt\src\vsprintf.c
Line 244
Expression:("Buffer too small", 0)
Kann mir jemand sagen, woran das liegt?
LFX3
> char szZahl[10];> case 0: sprintf_s(szZahl, "%31d", tm.tmHeight);
Wie soll denn eine Zahl, die du mit 31 Dezimalstellen als Text
dargestellt haben willst (und der Text daher aus 31 Zeichen bestehen
wird), in einen String passen, der gerade mal Platz für 9 Zeichen hat?
template <size_t size>
int sprintf_s(
char (&buffer)[size],
constchar *format [,
argument] ...
); // C++ only
... eine Automatik eingebaut hat, die dann greift, wenn der Compiler das
Array selber sehen kann. Denn irgendwann hast du dann diesen Fall nicht
mehr und dann ist das Kopfkratzen groß, was denn das Problem ist. Nichts
gegen Komfort, aber zuviel Komfort macht nachlässig.
Und ob die "ld" richtig sind, muss man in der TEXTMETRIC Struktur
nachsehen. Das steht
typedefstruct tagTEXTMETRIC { /* tm */int tmHeight;
int tmAscent;
int tmDescent;
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
} TEXTMETRIC;
Nö. ld ist definitiv falsch. tmHeight ist vom Datentyp int. Also muss
der Formatspecifier ein "d" sein und kein "ld".
Leg das Buch zur Seite und kauf dir erst mal ein vernünftiges
Einsteigerbuch für C. Der Klassiker "Kernighan&Ritchie" wird immer
wieder gerne genommen.
Wenn du den durch hast und auch verstehst, dann fallen dir die Fehler in
diesem Buch dann auch auf. Alleine der Titel muss schon stutzig machen.
Zwischen "Einführung" und "professioneller Anwendung" liegen im
günstigen Fall so ca. 3 bis 4 Jahre und eine halbes Bücherregal an
Literatur.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang