07. juni 2007 - 17:49
Der er
6 kommentarer og 1 løsning
"Space" først i en streng?
Hej med jer, Mit program crasher når jeg prøver at køre følgende: char *ProgramFolder = getenv("ProgramFiles"); char *text = ""; char *text2 = ""; char *text3 = " "; text = ProgramFolder; text2 = "\\downloaded program files\\ebjsecurity_2.dll /u /s"; strcat(text, text2); strcat(text3, text); MessageBox(NULL , text , "Detaljer", MB_OK); Grunden til at jeg skal bruge et space i starten af strengen, er at jeg skal bruge den samlede streng som parameter i en shellexecuteinfo.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Du har jo så heller ikke allokeret hukommelse til at holde de tegn du vil kopiere. char *text = ""; // allokerer plads til 0 tegn char text[4096]; // plads til 4096 tegn du kan desuden heller ikke vide dig sikker på, at dine char-pointere peger på et data-segment (Windows får en interrupt galt i halsen, hvis du forsøger at skrive til område, hvor der kun bør ligge kode)
Du kan ikke strcat'e til noget der er erklaeret som: char *p = "xxxxxx"; brug: char p[100] = "xxxxxx"; saa er der noget skrivbart plads at strcat'e til.
char *text = ""; allokerer faktisk plads til 1 tegn. Mindst et tegn - der alignes formentligt til 4 byte boundaries. Men det er en readonly data segment (ikke et kode segment).
Nu har jeg ændret følgende: char *ProgramFolder = getenv("ProgramFiles"); char text[100] = ""; char text2[100] = ""; char text3[100] = " "; text = ProgramFolder; text2 = "\\downloaded program files\\ebjsecurity_2.dll /u /s"; strcat(text, text2); strcat(text3, text); MessageBox(NULL , text3 , "Detaljer", MB_OK); Men får fejl i linien "text = ProgramFolder;" (incompatible types i assignment of `char*' to `char[100]') og i linien "text2 = "\\downloaded program files\\ebjsecurity_2.dll /u /s";" (incompatible types i assignment of `const char[50]' to `char[100]' ) Hvordan får jeg disse converteret korrekt?
Jamen nu spiller det bare. Kan I ikke ligge et svar begge to? Mange tak for hjælpen!
Kurser inden for grundlæggende programmering