Основная проблема в том, что strtok
не не находит строку внутри другой строки.strtok
ищет символ в строке.Когда вы даете несколько символов strtok
, он ищет любой из них.Следовательно, запись strtok(array, "...");
точно такая же, как запись strtok(array, ".");
.Вот почему вы получаете разделение после «3».
Есть несколько способов сделать то, что вы хотите.Ниже я покажу вам пример использования strstr
.В отличие от strtok
функция strstr
находит подстроку внутри строки - именно то, что вы ищете.Но .. strstr
не является токенизатором, поэтому для печати подстрок необходим дополнительный код.
Что-то вроде этого должно сделать:
int main()
{
char array[] = "AAAA... A1... 3. B1...";
char* ps = array;
char* pf = strstr(ps, "..."); // Find first substring
while(pf)
{
int len = pf - ps; // Number of chars to print
printf("%.*s\n", len, ps);
ps = pf + 3;
pf = strstr(ps, "..."); // Find next substring
}
return 0;
}