|
发表于 2019-2-14 18:39:23
|
显示全部楼层
跟查找字符串原理是一样的。只要知道要查找的内存地址,传入,然后对比即可。
如:
- #include <stdio.h>
- #include <string.h>
- char *FindRoleNameAddr(char *pData, char *pRoleName);
- char *FindRoleNameAddr(char *pData, char *pRoleName)
- {
- char temp[sizeof(pRoleName)]={'\0'}; // 通过sizeof获取传入字符串的大小,定义个临时数组
- char *cpData;
- int i;
- cpData = pData; // 先用cpData指向pData的首地址
- while(1)
- {
- for(i=0; i<(sizeof(pRoleName)-1); i++) // 获取字符串保存到temp数组中
- {
- temp[i] = *pData;
- pData++;
- }
- if ( strcmp(temp, pRoleName)==0 ) // 对比获取到的字符串是否和目标字符串相等
- {
- return cpData; // 相等返回字符串所在地址
- }
- pData = ++cpData; // 把pData指向下一个字符的地址。
- }
- }
- int main()
- {
- char *myStr = "abcdawewowfasdfsdf";
- char *tStr = "wow";
- char *pStr;
- pStr = FindRoleNameAddr(myStr,tStr);
- printf("找到:%s, 地址是:%p\n", pStr, pStr);
- return 0;
- }
复制代码 |
评分
-
查看全部评分
|