- 381 名前:これ参考に [2007/10/26(金) 17:37:47 ]
- #include <stdio.h>
#include <time.h> #include <string.h> int N; void serch(char* x,char* str,int* adr){ char t[256];int n,M,k,su=0; for(M=0;;M++)if(str[M]=='\0')break; for(n=0;n<256;n++)t[n]=M; for(n=1;n<=M;n++){k=(unsigned char)str[M-n];if(t[k]==M)t[k]=n;} n=0;while(1){ for(k=0;k<M;k++)if(str[k]!=x[n+k]) break; if(k==M){adr[su]=n;su++;n+=M;} else {k=(unsigned char)x[n+M];n+=t[k];} if(n+M>=N){adr[su]=-1;return;}}} main(){ N=18000000;char *x=new char[N];N=0; char buf[120],k,n; FILE *fp=fopen("2ch.txt","rb"); while(k=fread( buf,1,100,fp)){ for(n=0;n<k;n++)x[N+n]=buf[n];N+=k;} fclose(fp); printf("データロード完了!\n測定中です・・・\n"); int adr[30000]; char str[]="名無し"; serch(x,str,adr); }
|

|