Вы читаете строки вашего файла в один буфер, который повторно используется для каждой строки - line
.
strtok
возвращает указатель в буфер, с которым он работает.
Вы сохраняете результат strtok
в своем связанном списке, не создавая копию строки.
Когда вы читаете следующую строку, этот указатель все еще указывает на то же место в строке, но теперь в этой строке есть другие данные. Вы не получите то, что ожидаете.
Чтобы исправить это, вам нужно скопировать (с strcpy
или чем-то похожим) результат в буфер в вашем связанном списке. Если у вас есть strdup
, вы можете использовать это.