Вчера у меня была проблема с моей функцией, которая оказалась простым решением, и теперь у меня другая проблема, которая сбивает меня с толку.Функция является токенизатором:
void tokenizer(FILE *file, struct Set *set) {
int nbytes = 100;
int bytesread;
char *buffer;
char *token;
buffer = (char *) malloc(nbytes + 1);
while((bytesread = getLine(&buffer,&nbytes,file)) != -1) {
token = strtok(buffer," ");
while(token != NULL) {
add(set,token);
token = strtok(NULL," ");
}
}
}
Я знаю, что вход (текстовый файл) корректно разбивается на токены, потому что во втором цикле while я могу добавить printf ("% s", токен) кпоказать каждый токен.Однако проблема заключается в доп.Это только добавление первого токена в мой список, но в то же время все равно корректно разбивает каждый токен.Например, если бы мой входной текст был «бла герпес сумасшедший», я бы получил
токен = бла
токен = герп
токен = сумасшедшийсписок будет содержать только первый токен, бла.Я не верю, что проблема с add, потому что он работает сам по себе, то есть я мог бы использовать
add(set,"blah");
add(set,"herp");
add(set,"derp");
, и результатом будет список, содержащий все три слова.
Спасибо за любую помощь!