Anfänger Problem mit char array und cout



  • Hallo Forum,

    ich habe ein Problem mit dem folgen den Code

    #define MAX_PATH 260
    #include <iostream>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
      int size = strlen(argv[0]);
      char buff[MAX_PATH];
    
      // finde das erste '\' Zeichen von rechts
      // aber überspringe ein führendes '\'
      while( *(argv[0] + --size) != '\\') 
    
      // lösche den Buffer zur Sicheheit
      memset(buff,0, MAX_PATH);
      // kopiere den string in buff mit dem Offset von (size + 2)
      strcpy(buff, argv[0] + (size + 2));
    
      // Ausgabe durch den iostream
      cout << "Progname : " << buff << endl; // <-- hier kommt Müll auf der 
                                             // Konsole, der Debugger (VS2008) zeigt 
                                             // aber für buff die richtigen Werte an?
    
      // Und als Beispiel
      char buff2[] = {'h','a','l','l','o','\0'};
      cout << "Sag hallo: " << buff2 << endl;  // <-- funktioniert!
    
      // Alle sonstigen erdenklichen (statischen) Varianten funktionieren ebenfalls!
    
      return;
    }
    

    System WindowsXP, kein UNICODE Build, VS 2008 Prof. Sp1 Compiler,
    ich stehe hier vor dem Problem das ich nicht verstehe was hier passiert.



  • while( *(argv[0] + size--) != '\\')
    
    return 1;
    

    Das gibt bei mir "Console.exe" aus...

    Im übrigen solltest du bei "while" Klammern setzten, zur besseren Übersicht.

    Sorry, keine Ahnung woran es liegen könnte 😞


Log in to reply