C: как использовать strtok, чтобы получить то, что находится внутри круглых скобок?

#c #string #parsing #strtok

#c #строка #синтаксический анализ #strtok

Вопрос:

У меня есть строка «13657 ($ t1)», которую я получаю из файла и сохраняю в смещении, и я хочу получить число перед «(«, а затем получить $ t1. это то, что у меня есть:

 char *token = strtok(amp;offset, "("); // this works and i get 13657.
  

Теперь мне нужно получить $ t1, и я попытался сделать

 char *token2 = strtok(amp;offset, "()"); //but it does not work. I should get $t1 
  

любая помощь приветствуется

Комментарии:

1. Пожалуйста, прочитайте документацию для strtok . Вы увидите, что последующие вызовы для возврата большего количества токенов в той же строке требуют NULL передачи. Для получения дополнительной помощи в решении этой проблемы, пожалуйста, покажите минимальную компилируемую программу, демонстрирующую проблему, чтобы мы могли видеть важную информацию, такую как тип offset , как вы читаете и сохраняете строку и т.д.

2. Если вам не нравится поведение функции strtok , описанное в предыдущем комментарии, вы можете вместо этого взглянуть на функцию strcspn .

3. Вы также можете посмотреть на функцию strchr , если хотите найти один символ. Например, вы могли бы сначала вызвать strchr поиск '(' , а затем strchr снова вызвать поиск ')' .