Перейти к содержимому

Фотография

while, for, ...


  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 potam

potam

    Новый участник

  • Members
  • Pip
  • 18 сообщений

Отправлено 06 июня 2012 - 13:41


	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.


Как быть?
  • 0

#2 potam

potam

    Новый участник

  • Members
  • Pip
  • 18 сообщений

Отправлено 06 июня 2012 - 14:09

	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++) {
				if (token != NULL) {
				
			   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 на NULL вроде как решило проблему
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных