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