Я пытался понять это, и у меня есть работа, но я просто хотел проверить, не упускаю ли я что-то очевидное. По сути, у меня есть ряд команд, которые следуют определенным правилам. Все, что содержит цифру, букву ASCII или определенные символы, является токеном, а ‹,>,|,&&,; и т. д. являются разделителями. Мне нужно иметь возможность сказать, какой из них я только что нашел, и сохранить их в массиве.
Итак, в цикле while у меня есть
a = sscanf (cp, "%[0-9a-zA-Z!@:/-.,^+% ]", str);
Я включил пробел в качестве одного из символов для поиска, так как не мог найти другого способа. Вместо этого, после того как я получу слово (плюс возможные пробелы), я вызываю
delimiters[] = " ";
token = strtok(str, delimiters);
Который должен удалить пробел, оставив мне только токен (а если пробела не было, это просто не меняет слово). Мне просто любопытно, есть ли способ сделать что-то подобное с sscanf, так как я знаю, что он уже разбивает строки, если между ними есть пробел, но если вы вызываете его снова и он видит пробел, он просто не читает что-либо.
Если нет, то тоже хорошо. Это просто прослушивало меня весь день.