Эй, я хотел найти подстроку «Step1» в файле и обыскал ее с моим кодом. Хотя этот файл содержит NULL-символы (в основном символы HEX). С этими символами Null в моем файле мой синтаксический анализатор терпит неудачу и возвращает true. Я пробовал и искал много материала о замене и удалении символов NULL, но все было напрасно. Это мой парсер:Поиск подстроки в String среди NULL символов в текстовом файле
char *str="Step1";
fp=fopen(fname, "rb");
if(NULL == fp)
return(-1);
while(fgets(temp, 400, fp)!= NULL)
{
if((strstr(temp, str1))!= NULL)
{
system("start Step1.bat");
count_step[0]++;
}
}
if(fp)
fclose(fp);
Это как мой текстовый файл выглядит следующим образом:
NULLNULLNULLNULLStep1NULLNULLNULL
NULLNULLStep1
Просьба предложить мне быстрое решение, которое я могу включить
Если файл является текстовым файлом, то почему вы открываете его в двоичном режиме? Это может помешать работе 'fgets' работать должным образом. И если файл на самом деле не является текстовым файлом, а 'NULL', который вы показываете нам, фактически является бинарным нулем, тогда вы не можете использовать текстовые функции, такие как' fgets' или 'strstr'. Не могли бы вы прояснить? –
Было бы хорошо, если бы вы не использовали строковые функции и не записывали свой собственный «strstr». Таким образом, вы можете обрабатывать символы NULL или любые другие символы, как вы пожелаете. – Abhineet
@JoachimPileborg Я только что проверил, открыв его в двоичном режиме, если это имеет значение. Да, это текстовый файл – naruto