Avatar billede the_fox Nybegynder
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.
Avatar billede morhan Novice
07. juni 2007 - 18:09 #1
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)
Avatar billede arne_v Ekspert
07. juni 2007 - 18:14 #2
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.
Avatar billede arne_v Ekspert
07. juni 2007 - 18:19 #3
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).
Avatar billede the_fox Nybegynder
11. juni 2007 - 11:14 #4
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?
Avatar billede arne_v Ekspert
11. juni 2007 - 16:30 #5
strcpy
Avatar billede the_fox Nybegynder
11. juni 2007 - 22:04 #6
Jamen nu spiller det bare. Kan I ikke ligge et svar begge to?

Mange tak for hjælpen!
Avatar billede arne_v Ekspert
11. juni 2007 - 22:37 #7
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester