Здравствуйте.
Есть задача - распарсить строку «s x1 y1\nm x2 y2\n» разложив x1, y1, x2, y2 по отдельным массивам...
  #define VARBUF 8
  char mystr[] = "s x1 y1\nm x2 y2\n";
  char *str = mystr;
  char var1[VARBUF] = {0,};
  char var2[VARBUF] = {0,};
  char var3[VARBUF] = {0,};
  char var4[VARBUF] = {0,};
  int flag = 1, i = 0, i2 = 0;
  int str_len = (int)strlen(mystr);
  
  for(; i < str_len; i++)
  {
	  if(flag == 1 && *str == ' ')
	  {                               
		  flag = 2;
		  str++;
		  i++;
		  i2 = 0;
		  for(; i < str_len && i2 < VARBUF - 1; i++, i2++, str++)
		  {
			  var1[i2] = *str;
			  if(*str == ' ') 
			  {
				  var1[i2] = 0;
				  break;
			  }
		  }
	  }
	  
	  if(flag == 2 && *str == ' ')
	  {                               
		  flag = 3;
		  str++;
		  i++;
		  i2 = 0;
		  for(; i < str_len && i2 < VARBUF - 1; i++, i2++, str++)
		  {
			  var2[i2] = *str;
			  if(*str == '\n') 
			  {
				  var2[i2] = 0;
				  break;
			  }
		  }
	  }	  
 
	  if(flag == 3 && *str == ' ')
	  {                              
		  flag = 4;
		  str++;
		  i++;
		  i2 = 0;
		  for(; i < str_len && i2 < VARBUF - 1; i++, i2++, str++)
		  {
			  var3[i2] = *str;
			  if(*str == ' ') 
			  {
				  var3[i2] = 0;
				  break;
			  }
		  }
	  }		  
	  
	  if(flag == 4 && *str == ' ')
	  {                              
		  flag = 0;
		  str++;
		  i++;
		  i2 = 0;
		  for(; i < str_len && i2 < VARBUF - 1; i++, i2++, str++)
		  {
			  var4[i2] = *str;
			  if(*str == '\n') 
			  {
				  var4[i2] = 0;
				  break;
			  }
		  }
	  }	
	  
	  str++;  
}
Можно ли назвать представленный выше код конечным автоматом?



