2011-06-26 3 views
0

У меня есть небольшая программа, которая будет искать некоторую строку в файле. Эта строка имеет переменную часть на конце и ей всегда предшествует байт, который указывает размер.strcmp действует weird

Например, мы будем искать "HTTP: //" в "aaaaa.http: //www.example.combbbbb" (ASCII-код является 0x17

Допустим, мы "". . открыли файл код, который будет выполняться в:

while(car != EOF){ 
    car = fgetc(file[ii]); // we get everything in the file 
    lastBuffStart=ftell(file[ii]); 
    ij=1; 
    buffer[0]=car; // we start editing the buffer 
    printf("\n%d (%c) - %d (%c) ",car,car,base[0],base[0]); 
    while(ij<(buffsize-1)){ 
     buffer[ij]=fgetc(file[ii]); 
     printf("\n | %d (%c) - %d (%c) ",buffer[ij],buffer[ij],base[ij],base[ij]); 
     ij++; 
    } 

    fseek(file[ii],lastBuffStart,0); // we get back to the old position before the buffer continues 

    if(strcmp(buffer,base)==0){ // we compare 
     byteSize = (ftell(file[ii])-1); // we get the position of the size byte 
     printf("\nFound : 0x%x\n",byteSize); 
     } 
    } 

Мы читаем все файлы и поместить в буфер следующие символы для сравнения с базой (НТТР: //).

Моя проблема заключается в том, что мы удаляем printf ("\ n |% d (% c) -% d (% c)", buffer [ij], buffer [ij], base [ij], base [ij]); Ничего не найдено ...

Я действительно не вижу, что я делаю неправильно.

Вы можете мне помочь?

Заранее спасибо.

ответ

3

Вы забыли о нулевом окончании буфера. Кроме того, вы должны использовать memcmp вместо strcmp. Кроме того, код будет намного яснее, если бы вы использовали fread вместо цикла while.

+0

Спасибо. Это было так просто. Я не знаю, почему я этого не видел. – MisterDoy