2012-05-24 2 views
2

Здравствуйте, это сегмент моего кода, в котором я пытаюсь реализовать алгоритм Морриса-Пратта. Когда я сравниваю свои переменные, если они не совпадают, это потому, что одна из моих переменных «Temp» получает дополнительные символы, добавленные в конец массива. вот мой код ...Char массив, выводящий дополнительные символы

 // Calculate the next talbe 
     char test[searchLen]; 

     for(int i = 0; i < searchLen; i++) 
     { 
      test[i] = fileContent[currPos+i]; 
     } 

     cout << "SEARCHLEN: " << searchLen << endl; 
     cout << "TEST: " << '\t' << '\t' << test << endl; 
     cout << "SEARCH: " << '\t' << search << endl; 
     cout << strcmp(test,search) << endl << endl; 
     // Determine if a match is detected 

     if(strcmp(test,search)==0) 
     { 
      cout << "----------------------> Match detected at: " << currPos << endl; 
     } 

     currPos ++; 
    } 

    return numberOfComparisons; 
} 

Выход выглядит так ...

SEARCHLEN: 8 
TEST:  athsoutg5?h 
SEARCH:  brilling 
-1 

Как вы можете увидеть 5? H не должен быть там и ломает мой код.

ответ

6

Нужно добавить нулевой терминатор.

char test[searchLen + 1]; 
    test[searchLen] = '\0'; 
+0

AHhh! вот это благодаря кучам Джеймса :) –

1

Это похоже на то, что ваша строка не заканчивается \ 0, может быть, вы забыли ее скопировать или положить туда?

Смежные вопросы