Fehler bei sprintf
-
Hallo ich habe ein kleines problemchen!
if(noPcmInput == 1) { char PcmBuffer[40]; //sprintf(PcmBuffer,"C:\\WUTemp\\trk%d.pcm",TrackNo); sprintf(PcmBuffer,"\\%d\\trk%d.pcm",szPcmDirname,TrackNo); MakeDestFile((char*)PcmBuffer,startoffset,endoffset); iniVariablesSet = 0; }
Dies ist nur ein Teil meines Programms.
Und zwar wenn ich das Programm ausführe bekomme ich von Windows einen Fehler (Die Anweisung in "0x0040433c" verweist auf Speicher in "0x0000000c".Zu den Paramteren:
szPcmDirname = oCmdLineParser.GetParameterString("-o");
Der User gibt hier ein Verzeichnis an. In meinem Fall war es zB: C:\WUTemp, kann jedoch ein beliebiges Verzeichnis sein!
Was mache ich hierbei falsch???
Danke für die kommende Hilfe
-
Hallo,
bin C Anfänger, bedeutet ((char*)...,....,....);
das alle übergabeparameter char pointer sind?
Gruß
Johann
-
Ersmal würd ich snprintf nehmen, da es sicherer ist. Einen Fehler seh ich allerdings auch nicht, wobei ich mich natürlich Frage...
- wozu der Cast ist
- was szPcmDirname für einen Wert hatdas alle übergabeparameter char pointer sind?
Nein, nur der direkt darauf folgende.....
-
CarstenJ schrieb:
Ersmal würd ich snprintf nehmen, da es sicherer ist. Einen Fehler seh ich allerdings auch nicht, wobei ich mich natürlich Frage...
- wozu der Cast ist
- was szPcmDirname für einen Wert hatdas alle übergabeparameter char pointer sind?
Nein, nur der direkt darauf folgende.....
Ok also Casten heist :
int a;
int b;
int c;
int *pionter;pointer = (int*) &a;
pointer zeigt auf a;
pointer++;
pointer zeigt auf b;
pointer++;
pointer zeigt auf c;Folgendes Beispiel:
buffer = (unsigned char *)&TXB0D0;TXB0D0 ein 8Bit Register eines Microcontrollers, es folgen TXB0D1,....,TXB0D7.
Ich übergebe der Funktion einen Zeiger auf einen 8 Byte langen String,
der anschliessend in die Register TXB0D0- TXB0D7 kopiert werden soll.
buffer ist als unsigned char Pointer declariert, warum muß ich "casten" wenn
ich den Pointer auf TXB0D0 setzen möchte, habe vorher Assembler programmiert
und es kommt mir deshalb vieleicht etwas komisch vor.
-
@viveks
Ich vermute, dass dein PcmBuffer zu klein ist. Verwende snprintf(), wie es dir CarstenJ geraten hat. Lass dir auch mal den Wert von PcmBuffer ausgeben; am besten im Debugger ;).