Evidentemente non sono ancora riuscito a farti capire cosa succede:
Nella prima getchar() all'inizio tu premi 'a' e poi <invio>. La 'a' ti viene ritornata ma <invio> rimane nel buffer.codice:if ((c=getchar())=='a'){ printf("La tua selezione e' stata a\n"); printf("inserisci il prezzo di vendita non comprensivo di spese di spedizione; \nEuro:"); getline(vettore); k=atof(vettore); if (k <= 50){ a=k/100; b=a*5.25; s=(k-b-2.5-1-5+4); printf("La tua parte inclusiva di spese di spedizione e': %d\n", s); } } system("pause"); } int getline (char vettore[]){ int c,i=0; while((c=getchar())!= '\n') vettore [i++]=c; if (c=='\n') vettore[i++]=c;
Poi entri nella tua getline(). C'è un ciclo while in cui prima di tutto, esegue una getchar() e quel <invio> rimasto nel buffer ti viene restituito. E si esce subito dal ciclo perché il carattere letto è '\n'.
Nel if successivo la condizione è true perché c contiene appunto '\n' e quindi in vettore[i] scrivi un '\n'.
Questo è quello che succede. Non è quello che volevi??? Allora cambia la gestione dell'input. Punto.

Rispondi quotando