синтаксис для strtok()
:
char *strtok( char *str, const char *delim );
Обратите внимание, что вторым параметром является указатель на символ, а не символ, поэтому второй параметр в каждом из вызовов strtok()
должен быть заключен в двойные кавычки, а не в одинарные кавычки
После исправления синтаксиса и добавления некоторого интервала для удобочитаемости, результирующий код будет:
#include <stdio.h>
#include <string.h>
int main( void )
{
char str[] = "aa.bb.cc.dd.ee.ff";
char *p;
p = strtok( str, "." );
while( p )
{
printf( "%s\n", p );
p = strtok( NULL, "." );
}
return 0;
}
и при запуске исправленного исходного кода вывод:
aa
bb
cc
dd
ee
ff
Примечание: с современными компиляторами C утверждение:
return 0;
может быть исключено, поскольку возвращение из main()
(если не указано иное) равно 0