String speichern !
-
Hallo
Ich habe folgendes Code Segment:
DWORD dwBytesRead = 0; char szBuffer[101]; do { // Read data lLastError = extclass.Read(szBuffer,sizeof(szBuffer)-1,&dwBytesRead); if (lLastError != ERROR_SUCCESS){ printf(" read from error"); return false; } if (dwBytesRead > 0) { // Finalize the data, so it is a valid string szBuffer[dwBytesRead] = '\0'; // Display the data printf("%d", szBuffer); // Check if EOF (CTRL+'[') has been specified if (strchr(szBuffer,EOF_Char)) fContinue = false; } strncpy(m_UMTS_signal_qual,szBuffer,sizeof(szBuffer)-1); } while (dwBytesRead == sizeof(szBuffer)-1); } } while (fContinue);
Nun möchte ich szBuffer in einem Objekt m_Variable speichern.
char m_Variable[101];
so dass ich immer auf akktuellen Wert von m_Variable zugreifen kann:DWORD dwBytesRead = 0; char szBuffer[101]; do { // Read data lLastError = extclass.Read(szBuffer,sizeof(szBuffer)-1,&dwBytesRead); if (lLastError != ERROR_SUCCESS){ printf(" read from error"); return false; } if (dwBytesRead > 0) { // Finalize the data, so it is a valid string szBuffer[dwBytesRead] = '\0'; // Display the data printf("%d", szBuffer); strcpy(m_Variable,szBuffer); // !!! Wegen dieser Zeile Program stürzt ab !!!!!!! // Check if EOF (CTRL+'[') has been specified if (strchr(szBuffer,EOF_Char)) fContinue = false; } strncpy(m_UMTS_signal_qual,szBuffer,sizeof(szBuffer)-1); } while (dwBytesRead == sizeof(szBuffer)-1); } } while (fContinue);
Was habe ich denn falsch gemacht ?
Danke !
Gruss
-
std::string benutzen.
Bye, TGGC (Pipe my World.)
-
So wie ich das sehe, ist das ein typischer Fall eines Buffer Overflows.
Schreib es mal so
strncpy(m_Variable, szBuffer, sizeof(m_Variable) -1);
Und falls das nicht klappt, benutze MAX_PATH
char m_Variable[MAX_PATH];
Gruß
:: NoName ::
-
Mit
strncpy(m_Variable, szBuffer, sizeof(m_Variable) -1);
habe ich auch schon versucht, es hat nicht geklappt.std:string -> weiss ich nich wie ?!
Gruss
-
Und was ist mit MAX_PATH ?
Müssen es unbedingt 101 Zeichen sein ?Gruß
:: NoName ::
-
knopper schrieb:
std:string -> weiss ich nich wie ?!
Siehe Doku oder Bücher.
Bye, TGGC (Pipe my World.)
-
Ok:
str=szBuffer;
cout << str <<endl;Aber wie kann cih aber string nach char* konvertieren ?
Ich benutze str im Java Native nach jstring umwandeln ?
string str="test";
jstring s;
s=env->NewStringUTF((const char *)(LPCTSTR) str); // Das geht aber nicht !!!
return s;Gruss
-
Danke, so gehts
s=env->NewStringUTF(str.c_str());