Я пытаюсь взять строку пользовательского ввода от stdin, используя fgets
, tokenize его с strtok
, а затем распечатать каждый токен, чтобы убедиться, что он был правильно маркирован. Мой код выглядит следующим образом:Ошибка сегментации при печати токенов strtok
char buffer[256];
char *token;`
fgets(buffer, 256, stdin);
token=strtok(buffer," \n\t()<>|&;");
while(token!=NULL) {
printf("%s",token);
count++;
token = strtok(NULL," \n\t()<>|&;");
}
Я получаю ошибку сегментации, когда я добираюсь до printf
вызова, однако, и я не могу показаться, чтобы выяснить, почему именно.
Я только что протестировал его, и он отлично работает. Вы уверены, что не получите segfault из другой части программы? –
Короткая программа, использующая только этот код, работает нормально, без ошибки сегментации. Можете ли вы опубликовать фрагмент кода, который не удается? –
@MartinMajer Помещение только кода выше в основной функции вызывает segfault всякий раз, когда я запускаю его, независимо от того, что я вводил. Добавляя отпечатки, чтобы проверить, где произошла ошибка, он, похоже, находится на printf, который печатает токен, в качестве печати, которая происходит до того, как эта точка будет выполнена, но я получу segfault перед последующей печатью. – sven