Siemka!
Otoz ostatnio znalazlem dosyc ciekawe zadanie, ktore ma za zadanie w danym slowie znalezc odpowiednia fraze.
Moj kod wyglada nastepujaco:
int main (int argc, char** argv)
{
char input_string[100], search_pattern[50], matching_substring[100];
int i=0;
int j =0;
int k=0;
int m = 0;
char current_char;
/////////////////////////////////////////////
print_string("Zdanie: ");
do
{
current_char=read_char();
input_string[i]=current_char;
i++;
}
while (current_char != '\n');
int input = i-1;
printf("%d",input);
/////////////////////////////////////////////
while(1)
{
i=0;
print_char('\n');
print_string("Czego szukasz: ");
do
{
current_char=read_char();
search_pattern[i]=current_char;
i++;
}
while (current_char != '\n');
int sp = i-1;
printf("%d ",sp);
/////////////////////////////////////////////
i=0;
k=0;
while (i<input)
{
j=0;
if (input_string[i]==search_pattern[j])
{
while (search_pattern[j]!='\n'&&input_string[i]==search_pattern[j])
{
matching_substring[k] = input_string[i];
k++;
i++;
j=j+1;;
}
if (j==sp)
{
matching_substring[k] = '#';
k++;
}
else
{
for (m=0; m<100; m++)
{
matching_substring[m] = '\0';
}
}
}
else
{
i++;
}
}
print_string("Rezultat: ");
for (m = 0; m < 100; m++)
{
if (matching_substring[m] =='#'&&matching_substring[m+1] == '\0') {
matching_substring[m] = '\0';
}
if (matching_substring[m] != '\0'||matching_substring[m] != '\n')
{
print_char(matching_substring[m]);
}
else
{
break;
}
}
for (m=0; m<100; m++)
{
matching_substring[m] = '\0';
}
print_char('\n');
/////////////////////////////////////////////
}
return 0;
}
Niestety, ten kod nie dziala w przypadku gdy zdanie jest "hhh" a fraza szukana "hh". Wynik powinien byc hh#hh. Zamiast przecinka uzywam # do oddzielenia. Moglby ktos mi ewentualnie pomoc z wprowadzeniem poprawek, lub zasugerowac lepsza metode?