Ahoj, nevím si rady s implementací následujícího problému do jazyka C.
Mám dvě pole - line_buffer a column_buffer. Tyto pole jsou vždy stejně velké a mohou být naplněny například takto:
Po vytvoření tohoto pole přijde na řadu funkce, která když najde znak "@" řekne, že by kombinace {S, @} měla být přepsána například na {S, @}, {S, a}, {S, b}. Tyto kombinace ukládám do pole transfer_form tímto způsobem:
transfer_form = {S@ab A@b B@ab}
První znak znamená o jaké písmeno z pole line_buffer se jedná, zbytek znaků jsou pak prvky z pole column_buffer.
A teď s čím mám problém - potřebuji vytvořit nové dvě pole, zástupné za line_buffer a column_buffer, které by vypadalo takto:
Mám totiž problém s tím, že pokud proběhne podmínka, která vytvoří řetězec ":SSS:" a "ab@", tak pak už nevím, jak říct, aby se znak "A" a "a" ukládal až na index 7 v poli (a zajistit aby se mi nerozhodil zase začátek). Takže kód níže mi funguje pouze do prvního průchodu podmínkou...
char *follow;
char pom_1 [100];
char pom_2 [100];
follow = strtok(transfer_form, " ");
char help [strlen(transfer_form)];
while (follow != NULL)
{
strcpy(help, follow);
int o;
for (o = 0; o < strlen(column_buffer); o++)
{
if (column_buffer[o] == '@' && line_buffer[o] == help[0])
{
pom_1[o] = ':';
pom_2[o] = ':';
int p;
for (p = 0; help[p] != '\0'; p++)
{
pom_1[o+p + 1] = help[0];
pom_2[o+p + 1] = help[p + 1];
}
pom_1[strlen(pom_1)-1] = ':';
pom_2[strlen(pom_2)-1] = ':';
}
else
{
pom_1[o] = line_buffer[o];
pom_2[o] = column_buffer[o];
}
}
follow = strtok(NULL, " ");
}