Come puoi vedere dal codice postato, comps inizialmente vale 0. Se controllo la condizione
p->n, perdo l'ultima struttura. Ho scoperto, però, che il problema si presenta se uso questo codice:
for(p = comps; p; p = p->n)
{
s1 = ((((float)(25 - strlen(p->name))) + 0.5) / 2);
s2 = ((((float)(25 - strlen(p->name))) - 0.5) / 2);
s3 = ((((float)(52 - strlen(p->des))) + 0.5) / 2);
s4 = ((((float)(52 - strlen(p->des))) - 0.5) / 2) - 1;
fprintf(fw, "| %09.9i ", p->code);
fprintf(fw, "| %*s%.25s%*s ", s1, " ", p->name, s2, " ");
fprintf(fw, "| %*s%.50s%*s ", s3, " ", p->des, s4, " ");
fprintf(fw, "| %09.9i |\n", p->disp);
}
Se, invece, provo a scrivere solo il codice e la disponibilità del componente, il ciclo termina correttamente:
for(p = comps; p; p = p->n)
{
s1 = ((((float)(25 - strlen(p->name))) + 0.5) / 2);
s2 = ((((float)(25 - strlen(p->name))) - 0.5) / 2);
s3 = ((((float)(52 - strlen(p->des))) + 0.5) / 2);
s4 = ((((float)(52 - strlen(p->des))) - 0.5) / 2) - 1;
fprintf(fw, "| %09.9i ", p->code);
fprintf(fw, "| %09.9i |\n", p->disp);
}
Qualche suggerimento?