строка — Несоответствующая ошибка в программе C ++

В случае, если это уместно, я не компилирую это в среде Linux, вместо этого я использую компилятор tdm-gcc.

Я пишу текстовое поле для игры, и я хотел бы разделить произносимые слова на отдельные слова, чтобы потом поработать над ними. Моя проблема в том, что написанная мной функция split работает в конструкторе, а не в методе предварительного текста.

Это функция разделения:

char** split(char* string, const char* delimeter)
{
char** arr = (char**)malloc(sizeof(char*)*((strlen(string)+1)/2+1));
char* token = strtok(string, delimeter);
int i = 0;

while (token != NULL)
{
arr[i] = (char*)malloc(strlen(token)+1);
strcpy(arr[i], token);
i++;
token = strtok(NULL, delimeter);
}
arr[i] = NULL;
return arr;
}

Это мой (незаконченный) класс текстового поля

class Textbox
{
...
public:
Textbox(char* data[], int numSentences, SDL_Renderer* renderer, int scale)
{
...
fp = fopen("./text/names/female/femalenames1.txt", "r");

char* buffer;
int numBytes;

fseek(fp, 0, SEEK_END);
numBytes = ftell(fp);
fseek(fp, 0, SEEK_SET);
buffer = (char*)calloc(numBytes, sizeof(char));
fread(buffer, sizeof(char), numBytes, fp);
fclose(fp);

char** array = split(buffer, " ");

free(buffer);
fclose(fp);
}
void advanceText()
{
this->textPosition++;
char** array = split(this->data[this->textPosition], " ");
}
bool hasNext()
{
return data[textPosition] == "END" ? false:true;
}
};

Контекст advanceText ():

int playerIntro()
{
bool running = true;
...
SDL_Event event;
const char* dialogue[] = {"1st thing", "2nd thing", "3rd thing", "END"};
Textbox text((char**)dialogue, 50, renderer, scale);
while (running)
{
while (SDL_PollEvent(&event))
{
if (event.key.keysym.sym == SDLK_RETURN and text.hasNext())
{
text.advanceText();
}
}
...
}
...
return 0;
}

РЕДАКТИРОВАТЬ

Кажется, проблема на самом деле в первой функции strtok функции split

Обратите внимание, что любые неопределенные переменные в этом посте на самом деле определены в исходном коде. Любая помощь приветствуется, спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector