char ?



  • Also ich hab folgendes Problem:

    char szKey[MAX_PATH];
    for(int c=0; c<sizeof(szKey); c++)
      szKey[c]='A';
    szKey[sizeof(szKey)]=0; // hier stürtzt das Prog ab
    

    mach ich aber

    char szKey[MAX_PATH];
    for(int c=0; c<sizeof(szKey); c++)
      szKey[c]='A';
    szKey[sizeof(szKey)-1]=0; // so klappt es
    

    dann funktioniert es. Wieso darf ich in dem letzten Byte nicht herumschreiben.
    ??

    danke!
    cu para
    😃



  • darfst du doch, dass letzte byte ist sizeof(x)-1

    man zählt ja von 0 bis n-1 und nicht von 1 bis n



  • Ich Hirnie! 😃
    Alles klar.
    Wenn es dann so aussieht:

    Byte # [0] [1]  [2] ... [sizeof(...)-2]  [sizeof(...)-1]
    Byte    A   A    A               A                 \0
    

    Dann bekomme ich bei einem strlen(...) sizeof(...)-1 heraus stimmts?

    danke!
    cu para
    😃



  • In dem konkreten Fall:

    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<cstdlib>
    using namespace std;
    int main()
    {
       char c[255];
       fill(c, c+254, 'A');
       c[254] = 0;
       cout << strlen(c) << " " <<  sizeof(c) << endl;
       system("PAUSE");
    }
    

    Kann man aber net generell sagen da ein String ja nie den gesamten Speicherbereich nutzen *muss*.



  • @Lars
    naja, dass ist das ANSI C Forum, nicht das C++ Forum 😉


Anmelden zum Antworten