永发信息网

C++帮忙完成内存匹配函数

答案:2  悬赏:20  手机版
解决时间 2021-03-10 14:56
  • 提问者网友:末路
  • 2021-03-09 22:22
int memstr(char*src,int srclen,char*key,int keylen);
注意是内存匹配,src和key都不是字符串,因此传入srclen和keylen两个长度参数,返回key在src中首次出现的位置的索引,不需要思路,我自己想,调试成功才给分
最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-03-09 22:32
//#include "stdafx.h"//vc++6.0加上这一行.
#include 
using namespace std;
int memstr(char *src,int srclen,char *key,int keylen){
    int i,j,k;
for(k=srclen-keylen+1,i=0;i         for(j=0;j             if(key[j]!=src[i+j])
                break;
        if(j==keylen)
            return i;
    }
    return -1;
}
int main(void){//只用来测试一下memstr
    char a[]="1234567890jfkasl;jfklsa;fjl;safjl;ask";
    cout << memstr(a,10,"90",2) << endl;
    return 0;
}
全部回答
  • 1楼网友:人類模型
  • 2021-03-10 00:06
鄙人认为是cout对输出重载的问题,而不是类函数地址分配问题,准确地说,任何类函数的地址都是静态的,派生和基类所谓覆盖和虚函数,都是针对虚函数表的操作,所以通过一般方法也能得到类函数地址: #include <iostream> #include <stdio.h> using namespace std; struct aa { void bb(){ cout << "a\n"; }; void dd(){ cout << "b\n"; }; }; void cc(){}; void main() { char a[100]; printf("%x %x\n", &aa::bb, &aa::dd); sprintf(a, "%x", &aa::bb); //cout<< &aa::bb << &aa::dd << endl; //cout<< &cc <<endl; void (*f)(); sscanf(a, "%x", (int*)&f); f(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯