Множество проблем за пределами этого кода не компилируется.
Вы должны включить windows.h вверху файла, чтобы избавиться от проблемы, связанной с PCHAR, и ошибки, связанной с BufferPar.
#include <windows.h>
Но это все равно не решит проблему компиляции.
Ваше выражение:
if((vPointer=strstr(pPagebuffer, pInitchar) == NULL){
Не скомпилируется, потому что вам не хватает дополнительного набора паренов. Попробуйте вместо этого:
if((vPointer=strstr(pPagebuffer, pInitchar)) == NULL){
То же самое здесь:
if((pNchar=strstr(vPointer, pFinalchar) == NULL)){
Должно быть:
if((pNchar=strstr(vPointer, pFinalchar)) == NULL)){
(также, условие else после pNchar не работает)
И эта строка не имеет абсолютно никакого смысла:
pNchar=[0];=pFinalchar=[0];
Эта строка ...
strcpy(String, vPointer);
... небезопасно, потому что вы копируете строку неопределенной длины в буфер фиксированной длины. Вместо этого используйте strncpy или strcpy_s. Или, по крайней мере, сделайте несколько шагов, чтобы проверить, что исходная строка не превышает размер буфера фиксированной строки.
И самое главное:
return String;
Нет, нет, нет !!! Не возвращайте указатель на переменную стека - ваша программа в лучшем случае потерпит крах (или, что еще хуже, будет иметь недетерминированную ошибку в зависимости от того, как ваша функция вызывается и использует возвращаемое значение). Последующие вызовы функций после возврата BufferPar приведут к удалению памяти, содержащейся в «String»