Finding a text in raw data(size nearly 10GB) and Printing its memory address using python
bartc
bc at freeuk.com
Mon Apr 23 16:52:18 EDT 2018
On 23/04/2018 21:45, Stefan Ram wrote:
> MRAB <python at mrabarnett.plus.com> writes:
>> offset += search_length
>
> Or, offset += 1, to also find overlaps of that kind:
>
> file = "eee"
> word = "ee"
>
> . The above word "ee" occurs at position 0 and 1 in the file.
>
> My attempt:
>
> #include <stdio.h>
> #include <string.h>
> int main( void )
> { FILE * const haystack = fopen( "filename.dmp", "r" );
> if( !haystack )goto end;
> char const * const needle = "bd:mongo:";
> int offset = 0;
> int const l =( int )strlen( needle );
> { int o[ l ]; /* VLA */
> for( int i=0; i < l; ++i )o[ i ]= -1;
> o[ 0 ]= 0;
> next: ;
> int const x = fgetc( haystack );
> if( x == EOF )goto out;
> ++offset;
> for( int i=0; i < l; ++ i )
> if( o[ i ]>= 0 )
> { char const ch = needle[ o[ i ] ];
> if( ch == x )++o[ i ];
> if( o[ i ]==( int )strlen( needle ))
> { printf( "found at %d\n", offset -( int )strlen( needle )); }}
> for( int i = l; i; --i )o[ i ]= o[ i - 1 ];
> o[ 0 ]= 0;
> goto next;
> out: fclose( haystack ); }
> end: ; }
>
Did you say that you teach programming?
--
bartc
More information about the Python-list
mailing list