arraygröße



  • Ich habe einen kleinen Code bei dem die Größe des Arrays automatisch bestimmt wird. es handelt sich um einen TCHAR.
    wie finde ich jetzt raus wie "groß" der ist ?
    so siehts aus:

    TCHAR szFileName[MAX_PATH];
        GetModuleFileName(NULL, szFileName, sizeof(szFileName) / sizeof(TCHAR));
        MessageBox(NULL, szFileName, TEXT("Info"), 0);
        string path;
        sizer = sizeof(szFileName);
        for(;z<sizer;z++)
        {
        path += szFileName[z];
    }
    cout<<path;
    

    Er mir den pfad aus, dass ist auch richtig, allerdings ist dahinter ein Zeichengewirr!
    WARUM ?
    danke im voraus



  • Dieses Mal hast du es immerhin geschafft, 70% richtig einzurücken. Schon mal ein Fortschritt.

    sizeof gibt dir die Grösse des Datentyps zurück - der steht schon zur Compilezeit fest. Für die Länge eines C-Strings verwendet man strlen() . In deinem Beispiel kannst du allerdings den std::string direkt von dem char* konstruieren.

    P.S. Es wäre gut, wenn du dein Problem nächstes Mal ein wenig genauer erklären und falls möglich die Non-Standard-Funktionen, die für dein Problem irrelevant sind, weglassen könntest.



  • Vielen Dank nun geht es!
    Zu dem Einrücken: es gibt ja nicht viel einzurücken 🙂
    es ist doch nur die klammer falsch oder ?



  • Tim06TR schrieb:

    es ist doch nur die klammer falsch oder ?

    man rückt im allgemeinen der logik des programms folgend ein, etwa 1 ebene pro scope. deine einrückungen sind aber willkürlich und lassen keinerlei logik erkennen.



  • Tim06TR schrieb:

    Zu dem Einrücken: es gibt ja nicht viel einzurücken 🙂

    Umso bedenklicher, dass du nicht einmal das hingekriegt hast.

    Es waren übrigens nur 60%, ich hab eine Zeile übersehen. Merk dir am besten gleich folgende Faustregel:

    Wenn du einen neuen Block beginnst, wird der Code innerhalb der geschweiften Klammern eine Ebene eingerückt. Anweisungen im selben Block stehen auf gleicher Höhe.

    int main()
    {                         // Funktionsblock einrücken
        double a = 3.5;
        for (int i = 0; i < 4; ++i)
        {
            a *= a + 0.25;    // lokaler Block, hier einrücken
            a -= 1.4;
        }
    
        if (a > 1234)
            a = 0;            // ebenfalls
    
        return 13;
    }
    

    Das sollte eigentlich in den meisten Fällen reichen. Klar gibt es Abweichungen, ein Teil ist auch Codestil. An die Konvention von einigermassen konsistenter Einrückung sollte man sich schon halten, zumindest, wenn man erwartet, dass andere den Code anschauen.



  • ups. so wärs besser:

    for (;;)
    {
       //blabla
       }
    

    oder ? ich will doch auch mal weiter lernen ^^



  • Tim06TR schrieb:

    ups. so wärs besser:

    for (;;)
    {
       //blabla
       }
    

    oder ? ich will doch auch mal weiter lernen ^^

    NEIN!!!

    Die schliessende Klammer ist wieder gleich eingerückt wie die öffnende! Ist das wirklich so schwierig? 🙄



  • äh... ja 😞 😃
    einmal falsch begonnen, schon wirds schwierig wieder davon wegzukommen. anfangs war es mir egal, aber als ich bemerkt habe, dass ich durch meinen EIGENE Programme nicht mehr durchsteige, und kein Wort mehr verstehe hab ich gemerkt, dass ich irgendwas falsch mache. Tja bis dann mal Nexus und unskilled mich auf die Einrückung aufmerksan gemacht haben.
    Ich besser mich so schnell es geht.
    ALSO SO ?:

    for (;;)
    {
       //blabla
    }
    

    wohin muss das Blabla ?
    (wegguck)



  • Ja, so ists richtig. Oben habe ich ja ein "Muster"beispiel gepostet (bitte Randbemerkung nicht übersehen).

    Das blabla kommt an die Stelle wie jetzt, eben eingerückt. Siehe mein Beispiel.


Anmelden zum Antworten