Pointer verstellen sich nach der while-schleife
-
Hallo,
ich habe mal wieder ein Problem.Wenn ich im folgendem Code "Entrys[0].KeyName" ausgeben will,
kann ich das nur innerhalb der while-Schleife.private: typedef struct entry { TCHAR * KeyName; TCHAR * Value; } INIENTRY; //-------------- Vars ------------------------------------------------------- private: TCHAR * m_tBuffer; DWORD m_iFileSize; __int32 m_iEntryCount; public: INIENTRY * Entrys; bool read_successfully; ... void _fastParseFile() { TCHAR * buf = m_tBuffer; __int32 pos = 0; m_iEntryCount = _getEntryCount(m_tBuffer); Entrys = new INIENTRY[m_iEntryCount]; while(pos++ < m_iEntryCount) { Entrys[pos].KeyName = buf; while(*buf++ != INI_SEPERATOR); Entrys[pos].Value = buf; while(*buf++ != INI_END_OF_VALUE); } }m_iEntryCount = 4
m_tBuffer ist nicht leer!Danke im Vorraus!
-
- die Mehrzahl von entry ist entries.
- voraus schreibt man mit einem r.
- da du Entrys[0] nie angreifst wird auch nix sinnvolles drinstehen können, nen?
Tip:
while (pos++ < foo) ...macht nicht das was du willst. Du willstfor (size_t pos = 0; pos < foo; pos++) ....
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Und wo lag da jetzt der Fehler?
Was macht die while-Schleife anders?
-
"pos++" ist zwar post-inkrement, aber "post" bezieht sich nicht auf die while schleife, sondern auf die "expression". d.h. beim 1. durchlauf von "while (pos++ < foo)" ist pos bereits 1, nicht 0.
-
Vielen Dank
