如何加入两个指针以将其串在一起并将其存储在数组或字符中
How to concatenate two pointers to string and store it in an array or characters?
我所知道的是 xFFxFF
处的ptr点。假设PTR的值是(例如0x004E0000
),在xFFxFF
处,如何使FOO数组包含"x41x42x43x00x00x4Ex00"
?
代码:
#include <string.h>
#include <iostream>
#include <Windows.h>
int main()
{
char foo[20];
char *alpha = "x41x42x43";
char *test = "xFFxFF";
void *ptr = VirtualAlloc(NULL, strlen(test), 0x3000, 0x40);
RtlMoveMemory(lpvAddr, test, strlen(test));
}
我正在使用Visual Studio2017。
我假设您只想:
- 在
foo
的开头复制alpha
字符串 - 在
foo
中的字符串后立即复制test
指向的地址
memcpy
是复制任意对象时的朋友,但是使用辅助指针会更简单。代码可能是:
char foo[20];
char *alpha = "x41x42x43";
char *test = "xFFxFF";
char **pt = &test; // pt now points to the address where "xFFxFF" lies
memcpy(foo, alpha, strlen(alpha));
memcpy(foo + strlen(alpha), pt, sizeof(char *)); // copy the address
但是谨慎:我刚刚回答了您的问题,但是我真的看不到它的真实用例。只是假设您是为了学习目的探索地址副本。
复制foo的任何内容与VirtualAlloc有什么关系?您有20个字符的数组,只需将您想要的值复制到该内存即可。您从不声明LPVADDR,您的意思是是PTR吗?
如果您的意思是(lpvaddrto为ptr,那将是类似的(尽管以这种方式获取8字节地址的高4个字节似乎是毫无意义的):
memcpy(foo, test, 4);
*((PULONG)foo+1) = *((PULONG)&ptr+1);
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++:将控制台输出存储在宏中更好吗
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 添加存储在向量中的大整数的函数出现问题
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 谷歌测试中的期望值存储在哪里
- 在c++中获取两个大int,并将它们存储在数组中
- 如何访问和改变存储在矢量C++中的对象
- 将 BASE 派生类存储在同一容器中
- 指向存储在字符串 c++ 中的十六进制
- 如何从用户那里获取输入并将其存储在向量中?
- 是否可以将存储在dword中的十六进制与getasynckeystate一起使用
- 如何加入两个指针以将其串在一起并将其存储在数组或字符中
- C++将基类对象和派生类对象存储在一起