zwei Pointer mit einander verbinden
-
Hallo Leute, ich weiß nicht ob das Möglich ist, aber ich würde gerne zwei pointer mit einander verbinden.
Hier ist mein Code:
#include "windows.h" #include "Modules.h" #include "fastMD5.cpp" BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; } // extern "C" __declspec(dllexport) void GetInfo(MODULEINFO *); // extern "C" __declspec(dllexport) int GetHash(HASHINFO *); // extern "C" __declspec(dllexport) int GetSalt(SALTINFO *); // extern "C" __declspec(dllexport) int GetPreparedHash(PREPAREDHASHINFO *); // extern "C" __declspec(dllexport) int GetPreparedSalt(PREPAREDSALTINFO *); extern "C" __declspec(dllexport) void GetInfo(MODULEINFO *info) { info->dwFlags = MODULE_HASH_BINARY | MODULE_HASH_SIMPLE; info->szAbout = "Type of hashes: MD5()\nMade by Nilix"; info->szHashType = "MD5()"; } extern "C" __declspec(dllexport) int GetHash(HASHINFO *info) { // Hash generation fast_MD5((unsigned char*)info->szPassword, info->nPasswordLen, info->pBuf); // Length of hash return 16; }
Und zwar würde ich das gerne beim Methodenaufruf machen
fast_MD5((unsigned char*)info->szPassword, info->nPasswordLen, info->pBuf);
Bei info->pBuf (es sollen 2 gleiche Strings aneinander geknüpft werden)
mit info.Equals(info->pBuf, info->pBuf) geht es nicht da es kein Klassen Sting variable ist.
Und mit dem . oder + Operator ist es ein völliger schmarn
Kann mir jemand bitte helfen
-
Dein Code ist nicht C++/CLI, sondern C. Somit falsches Forum, hoffentlich wird dein Beitrag bald verschoben.
Zum Problem:
Du kannst so vorgehen:
1.) Alloziere Speicher (z.B. mit malloc), und zwar soviel, das beide Teile drin Platz haben.
2.) Kopiere die beiden Teile mit memcpy, oder wenn es c-strings (char* mit 0 terminierung) sind mit strcpy in das allozierte memory.
3.) Speicher mit den verbundenen Teilen benutzen
4.) Sepicher wieder freigebenPS: Falls Du wirklich C++/CLI möchstest muss Du das ziemlich umschreiben.
PPS: Falls Du ISO C++ und nicht C benutzen möchtest, kannst Du auch mit new/delete arbeiten oder noch besser mit std::vector.
-
Zunächst einmal sollte es in C bleiben. Es geht ja um Geschwindigkeit.
gibt es denn keine einfachere Lösung hab schon länger nicht mehr programmiert.
Früher hatte ich mit den Zeigern schon so meine Probleme.
-
Keine Ahnung was für dich einfacher ist, aber du könntest auch ein array auf dem stack anlegen. Da ist aber die Grösse konstant (muss zur Compiletime bekannt sein).
Simon