Здравствуйте.
Есть задача - распарсить строку «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++;
}
Можно ли назвать представленный выше код конечным автоматом?