Я пробую strtok в Visual C ++, но, похоже, не работает. Это не первый раз, когда я использую strtok, но я просто не могу понять, что с ним не так. код довольно прост.
в основном
cout<<getLevels("/'Group'/'Channel1'")<<endl;
в getLevels ()
int getLevels(char * fullPath){
int level=0;
char *nextToken;
char * pch=strtok_s(fullPath, "/", &nextToken);// broken at here
while(pch!=NULL){
level++;
cout<<level<<":"<<pch<<endl;
pch=strtok_s(NULL, "/",&nextToken);
}
return level;
}
разрывается на линии
char * pch=strtok_s(fullPath, "/", &nextToken);
с ошибкой:
Unhandled exception at 0x10273de8 (msvcr100d.dll) in tdmsTest.exe: 0xC0000005: Access violation writing location 0x0041c840.
и курсор указывает на эту строку в strtok_s.ini
for ( ; *str != 0 ; str++ )
{
if (map[*str >> 3] & (1 << (*str & 7)))
{
*str++ = 0; // pointing here
break;
}
}
Я пробовал это в strtok () вместо strtok_s () раньше, но у него та же проблема.
Кто-нибудь может сказать мне, что не так с моим кодом?