02. december 2003 - 14:57Der er
6 kommentarer og 1 løsning
Hvor er fejlen?
#include <string.h> #include <windows.h>
using namespace std;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { char *cWinDir = getenv("windir"); //path strcat(cWinDir,"system/TheTest.exe"); //include the end path and the exefilename
return 0; } /*Jeg får ingen fejl når jeg compiler (borland), men når jeg kører den melder den fejl efter programmet er færdigt. Altså hvis jeg sætter fx en messagebox ind efter strcat kommer den også, men i slut kommer fejlen (forsvinder hvis jeg fjerner strcat). */
Du overskriver ikke allokeret RAM. Din getenv giver dig en streng præcis så lang, som nødvendigt, og du sætter mere bagved, dvs i RAM du ikke aner hvad er.
Du havde ret.. Sådan havde jeg ikke tænkt på det. Her er koden der virker:
#include <string.h> #include <windows.h>
using namespace std;
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { char cWinDir[1024]; strcat(cWinDir,getenv("windir")); //path strcat strcat(cWinDir,"system/TheTest.exe"); //include the end path and the exefilename
Der manglede en parantes. char *CWinDir = new char[strlen(genenv("windir"))+strlen("system/TheTest.exe")+1];
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.