Originariamente inviato da oregon
Non ti preoccupare ... ma rivedi il capitolo delle stringhe e dell'allocazione di memoria ... :-)
Il problema è che non si capisce una mazza 
Davvero, sto imparando molto di più girando sul web alla ricerca di informazioni che dal mio libro, che pure dovrebbe essere la bibbia del linguaggio C. In effetti le funzioni di allocamento della memoria non le ho ancora trattate e penso facciano parte dell'ultimo capitolo del libro, ma più o meno ne ho capito il funzionamento da vari esempi in rete.
Però, come dicevo, sul libro questi problemi di allocazione della memoria non se li fa proprio, e presenta la getword e il main in questo modo; da quello che ho capito da niubbo in materia, però, così facendo analizza solo il primo carattere della stringa in ingresso, mentre a noi interessa conoscere la parola in ingresso. O sbaglio??
codice:
int main()
{
char word[MAX_WORD];
struct key *p;
while (getword(word, MAX_WORD) != EOF)
if (isalpha(word[0]))
if ( (p = binsearch(word, keytab, NKEYS)) != NULL)
p->count++;
for (p = keytab; p < keytab + NKEYS; p++)
if (p->count > 0)
printf("%4d %s\n", p->count, p->word);
return 0;
}
int getword(char *word, int limit)
{
int c;
char *w = word;
while (isspace (c = getch()) )
;
if (c != EOF)
*w++ = c;
else
return EOF;
if (!isalpha(c) )
{
*w == '\0';
return c;
}
while (--limit > 0)
{
if (!isalnum(*w = getch()))
{
ungetch(c);
break;
}
w++;
}
*w = '\0';
return word[0];
}