Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » [Noob] Systemvariable auslesen -> Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.02.2006, 13:39 Uhr
~Posti
Gast


Hallo,

hab folgendes Problem..ich möchte die Systemvariable temp auslesen und brauche diese systemvariable dabei in 2x in meinem Programm. Jedoch unterscheiden sie sich später weil ich dann noch ein Unterverzeichnis brauch.

Das Problem ist, so wie ich es in meinem unten genannten Beispiel mache, steht in entry und entry2 das selbe drinne. Wieso?

Kann mir jemand helfen?

MfG


Code:

#include "stdafx.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char *entry;
char *entry2 = "";
char *windows;
char *windows2;
char verz[20] = "\\plugtmp\\access*";
char verz2[40] = "\\plugtmp\\";

windows = "temp"; /* 1. Parameter */
entry = getenv( windows );
strncat(entry, verz,600);

windows2 = "temp"; /* 1. Parameter */
entry2 = getenv( windows2 );
strncat(entry2, verz2,600);


cout << entry << endl;
cout << entry2;

    return 0;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.02.2006, 13:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


das das klappt bei dir ist zufall, du hängst an einen nicht von dir generierten zeiger weitere daten an, sowas kann böse ins auge gehen, ansonsten ist getenv nicht "safe" d.h es liefert für die gleiche variable auch den gleichen zeiger, wodurch entry und entry2 auf die gleiche speicherstelle zeigen.


C++:
#include "stdafx.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
  char *entry = NULL;
  char eintrag1[255], eintrag2[255];
  char verz[20] = "\\plugtmp\\access*";
  char verz2[40] = "\\plugtmp\\";

  entry = getenv("TEMP");
  if(entry) // hats den überhaupt geklappt?
  {
    strncpy(eintrag1, entry, 255);
    strncat(eintrag1, verz, 255); // die länge da gibt an wieviel in eintrag1 reinpassen! mit angabe von 600 kannste gleich strcat nutzen -.-
    
    strncpy(eintrag2, entry, 255);
    strncat(eintrag2, verz2, 255);
  }
  else
  {
     // tu was mit dem fehler
  }

  cout << eintrag1<< endl;
  cout << eintrag2;

    return 0;
}


--
class God : public ChuckNorris { };

Dieser Post wurde am 14.02.2006 um 13:57 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.02.2006, 15:05 Uhr
~Posti
Gast


vielen vielen Dank!
klingt irgendwie am Ende logisch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: