Mam dwa problemy z poniższym kodem.
Po pierwsze, kiedy chcę wypisać słowa wypisuje się po prostu wielokrotnie słowo przerywające pętlę, w tym wypadku 'stop'. Podejrzewam, że problem leży gdzieś w okolicy użycia funkcji realloc, ale niestety absolutnie nie potrafię sama znaleźć błędu. Czy mógłby ktoś wytłumaczyć co tu się wydarzyło?
Kolejna sprawa - program ma za zadanie wyświetlić wszystkie wpisane słowa oraz najdłuższe z nich, ale kiedy dodam linijkę "if(strlen(input)>strlen(longest) w pętli zaraz pod pobraniem wartości to pętla zatrzymuje się po jednym wykonaniu. Jak poprawnie zabrać się za szukanie najdłuższego wyrazu?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
int main ()
{
char input[MAX];
char longest="";
unsigned int count = 0;
char* stop= "stop";
char** words = NULL;
char** pom = NULL;
int n;
do {
printf ("Enter a word ('stop' to end): ");
scanf ("%s", &input);
count++;
pom = (char**) realloc (words, count * sizeof(char*));
if (pom!=NULL)
{
words=pom;
words[count-1]=input;
}
else
{
free (words);
puts ("Error (re)allocating memory");
}
} while(strcmp(stop,input)!=0);
printf ("Words: ");
for (n=0; n<count; n++)
printf ("%s ",words[n]);
free (words);
return 0;
}