Oppure

Loading
24/11/11 16:49
Dato che non ho molto tempo per fare "ricamo" tra tanti pezzi di codice, puoi postare un codice unico, compilabile, funzionante, con il main, da compilare subito senza errori per provarlo?

24/11/11 17:10
drewnik99
Se la lista collegata comprende solo una struttura, il ciclo funziona correttamente, mentre in caso ne contenesse di più, continuerebbe all'infinito.
aaa
24/11/11 17:12
Allora controlla il campo

n

dei vari elementi. L'ultimo deve essere NULL (in modo che la lista sia terminata correttamente e anche il ciclo termini).

In caso contrario, c'è un errore nell'inserimento.
24/11/11 21:13
drewnik99
Postato originariamente da drewnik99:

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 evito di scrivere i campi name e des, il ciclo funziona perfettamente. Si, n dell'ultima struttura è impostato a 0.
Ultima modifica effettuata da drewnik99 24/11/11 21:16
aaa
25/11/11 20:52
drewnik99
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);
}

aaa
29/11/11 18:09
pierotofy
Posta tutto il codice (mettilo in un allegato). Altrimenti e' impossibile aiutarti.
Il mio blog: piero.dev
01/12/11 16:29
drewnik99
Il problema era presente nel calcolo degli spazi, poichè non sempre i valori erano maggiori o uguali a 1.
aaa