Letztes Zeichen überprüfen, wenn Leerzeichen abschneiden funktioniert nicht



  • Hallo,

    ich hoffe ihr könnt mir weiterhelfen und seht meinen Fehler:

    Ich programmmiere mit Visual C++ unter Windows XP. Ich möchte mit einer start.exe den Apache starten, in die httpd.conf die TMP-Variable schreiben und wenn ich das Programm beenden möchte eine stop.exe in dem die TMP-Variable ausgelesen wird, dann muss noch ein Verzeichnisname+Dateiname drangehängt werden, um den Pfad zu der httpd.conf wieder zu bekommen. Die start.exe und stop.exe sollen aber letztendlich auch unter Vista und Windows 7 fehlerfrei laufen.

    Die start.exe läuft fehlerfrei, mit der stop.exe habe ich so meine Probleme. Unter XP läuft es auch fehlerfrei allerdings nicht unter Vista. Beim Auslesen der TMP-Variable hängt er ein Leerzeichen an das dann beim Anhängen des Ordners in dem die httpd.conf liegt, stört. Daher möchte ich wenn ich die TMP-Variable ausgelesen habe, das letzte Zeichen prüfen, wenn es ein Leerzeichen ist, dann möchte ich dieses sozusagen abschneiden. Hier mal mein Code:

    char strTmp[255];
    strcpy(strTmp,getenv("TMP"));
    char lastChar = strTmp[strlen(strTmp) - 1];
    char lastCharA[255];
    sprintf(lastCharA, "%c", lastChar);
    char test[255];
    strcpy(test, ";");
    strcat(test, lastCharA);
    strcat(test, ";");
    //dlg.MessageBox(lastCharA, "", MB_OK);
    //dlg.MessageBox(test, "", MB_OK);
    if(strcmp(lastCharA, " ") == 0){
      int n = strlen(strTmp)-1;
      char length[255];
      sprintf(length, "%i", n);
      //dlg.MessageBox(length, "", MB_OK);
      strncpy(strTemp, strTmp, n);
    }else{
      strcpy(strTemp, strTmp);
    }
    

    Wenn ich die dlg.MessageBox ausgaben drinnen lasse, dann funktioniert mein Programm, wenn ich sie auskommentiere, funktioniert es nur unter XP, bei Vista hat er dann ganz komische Zeichen am Ende des Ordners und ich habe dann Probleme wenn ich den Ordnername anfügen möchte, in dem die httpd.conf liegt.

    Ich hoffe, ihr könnt mir weiterhelfen.

    Viele Grüße


  • Mod

    Wie wäre es, wenn Du erstmal zumindest einm paar Grundlagen lernen würdest...
    Dein Code und sein Sinn wie auch Deine Erklärung sagen mir nichts.



  • CString s(getenv("TMP"));
    if (s.Right(1).Compare(" ")==0) s = s.Left(s.GetLength()-1);
    


  • warum so aufwändig?

    CString s(getenv("TMP"));
    s.TrimRight(' ');
    

    bringt doch das gleiche Ergebnis und alles ohne kontrollen


Anmelden zum Antworten