extern char * strtok(char * string, const char * delimiters ); // Explicit declaration char separators[] = ", "; char * token; char poks[500]; int i; char temp[10]; sprintf(poks, "%s", lr_eval_string("{pPoks}")); lr_output_message ("string poks %s", poks ); token = (char *)strtok(poks, separators); // Get the first token if (!token) { lr_output_message ("No tokens found in string!"); return( -1 ); } while (token != NULL ) { // While valid tokens are returned lr_save_string("", "pPok_1"); lr_save_string("", "pPok_2"); lr_save_string("", "pPok_3"); for(i=1; i<4; i++) { sprintf(temp, "pPok_%d", i); lr_save_string(lr_eval_string(token), lr_eval_string(temp)); token = (char *)strtok(NULL, separators); // Get the next token } }
Заранее известно, что количество token целое число от одного до трех.
В случае, когда в описании цикла for указано, что i<4, а кол-во token для этой итерации вдруг 2, то скрипт выпадает с ошибкой:
Error: C interpreter run time error: Action.c (78): Error -- memory violation : Exception ACCESS_VIOLATION received.
Как быть?