Это мой алгоритм поиска терминов в файл.Нарушение прав доступа при поиске по файлу
void ricerca_file(char* frase){
char* prelievo = "";
file = fopen("*userpath*\\file.bin", "rb");
while((fgets(prelievo, sizeof(prelievo), file)) != NULL){
if((strstr(prelievo, frase)) != NULL)
printf("frase trovata!\n");
}
fclose(file);
printf("%s", prelievo);}
я прошу вход frase
таким образом:
char* frase = "";
printf("insert the term that you want to search..");
scanf("%s", frase);
, а затем я вызвать функцию с:
ricerca_file(frase);
Компилятор дает мне эту ошибку после того, как я пишу вход (например, номер 2):
pr ove1.exe: 0xC0000005: место записи нарушения доступа 0x00F67BC3.
Если есть обработчик для этого исключения, программа может быть безопасно продолжена.
Что я делаю неправильно?
если не ясно, я учусь. Но я действительно не знал, как управлять поиском термина в файл. Я предполагаю, что с помощью этого алгоритма я могу пропустить множество совпадений, потому что если я ищу «привет», функция strstr, которая перемещает 5 символов за цикл, если у меня есть файл с текстом, подобным этому «abchelloabc», он сначала найдет " abche "и ничего не найдет, а после первого цикла он перейдет к части" lloab ", а затем" c ". Правильно ли я думаю, что он работает так, и это неправильно?
В дополнение к ответам ниже: если ваш файл двоичный, вы не можете использовать 'fgets' по понятным причинам, и если ваш файл является текстовым файлом, вам нужно использовать открытый режим' 'r' 'вместо' 'rb «'. –