Ahoj,
nevím si rady s postupem, jak napsat v jazyku C následující věc:
Mám vstupní pole, ve kterém jsou obsaženy nějaká slova, formát je následující
input = "S:aS S:a D:b E:TA"
Já potřebuji napsat funkci, které by našla slova, která nemají za znakem ":" velké písmeno a zároveň jsou tyto znaky obsaženy alespoň dvakrát ve slově (prostě z pole výše by to bylo S:aS a S:a). Všechny tyto slova by pak uložila do nějakého pole.
Já se v tom zamotal a nejsem schopnej vymyslet nic funkčního. Myslel jsem, že bych mohl použít counter, který, když by byl větší jak 1, tak by indikoval že je na vstupu více slov, které splňují podmínku výše...
void fce (char *input)
{
int size = strlen(input)+1;
char *token;
char *next_token;
char working_input [size];
char help [size];
buffer[0] = '\0';
strcpy(working_input, input);
token = strtok_r(working_input, " ", &next_token);
while (token != NULL)
{
strcpy(help, token);
if (isupper(help[2]) == 0)
{
char detect [strlen(help)];
detect[0] = help[0];
detect[1] = help[1];
detect[2] = help[2];
detect[3] = '\0';
int counter = 1;
int last_size = 0;
char *token_a;
char *next_token_a;
char current_input [size];
char temp [size];
char buffer [size];
strcpy(current_input, input);
token_a = strtok_r(current_input, " ", &next_token_a);
while (token_a != NULL)
{
strcpy(temp, token_a);
int i;
for (i = 0; temp[i] != '\0'; i++)
{
if (temp[i] == detect[0] && temp[i + 1] == detect[1] && temp[i + 2] == detect[2])
{
printf("Detekoval jsem slovo {%s}{%i}\n", temp, counter);
strcat(buffer, temp);
counter++;
}
}
token_a = strtok_r(NULL, " ", &next_token_a);
}
}
token = strtok_r(NULL, " ", &next_token);
}
}