Ciao a tutti, sono nuovo del forum, anche se seguo molte delle discussioni e devo dire che sono assolutamente esplicative e efficienti quindi complimenti a tutti voi
Quest'anno, 3 superiore di un ITIS, mi sto avvicinando abbastanza rapidamente al linguaggio di programmazione C da programma della mia scuola.. Siccome non sono per niente soddisfatto dell'insegnamento molto lento e abbastanza scadente
sto cercando di fare un po di esperienza da solo, seguendo tra l'altro una guida trovata su questo sito, la migliore che fin'ora abbia trovato..
Inizio dicendo che so che le funzioni scanf e forse altre sono deprecate, ma prima di passare ad altre più efficienti voglio scoprire un po come funziona tutto il c nelle sue potenzialità.
Il mio problema è che ho un programma in cui inserisco una ventina di dati, per calcolare alcune cose, in pratica sto facendo un programma per una busta paga per mio fratello.
Ho creato quindi una funzione che permetta di reinserire il dato se si preme "esc", senza creare una funzione diversa per ogni inserimento.
Il problema è che, provando il funzionamento con un prodotto tra i primi due dati inseriti, e i valori anche se li reinserisco sono i primi che ho messo.
Il codice è il seguente, ma vorrei che se possibile non mi diate alternative con funzioni diverse che forse ancora non conosco, ma che possiate spiegarmi come mai non funziona il codice che ho scritto io, mi reputo ancora un novellino, anche se della mia classe sono quello che sa di più, pensate che pena di scuola
Grazie mille 
codice:
#include <stdio.h>
#include <stdlib.h>
float reins(float x)
{
char a;
do{
printf("Premere invio per continuare, esc per reinserire il dato");
a=getch();
if (a==27)
{
printf("\nReinserire: ");
scanf("%f", &x);
}
}
while (a!=13);
printf("\n");
return x;
}
int main()
{
char trasf;
int fsmin, fsmag, fhmin, fhmag, g_trasf;
float retr_base, scat, sup_ind, premio_prod, str, ind_cassa, ind_trasf,
ind_mensa, fest_ng, fer_ng, mens_agg, ind_mal;
printf("\n\n\n\t\t\tBusta Paga by Simo\n");
printf("\nInserire i seguenti dati:\n");
printf(">> Retribuzione Base: ");
scanf("%f", &retr_base);
reins(retr_base);
printf(">> Scatti di anzianita': ");
scanf("%f", &scat);
reins(scat);
printf(">> Superminimo Individuale: ");
scanf("%f", &sup_ind);
printf(">> Premio di produzione: ");
scanf("%f", &premio_prod);
printf(">> Lavoro Straordinario: ");
scanf("%f", &str);
printf(">> Indennita' di cassa: ");
scanf("%f", &ind_cassa);
printf(">> Indennita' di trasferta: ");
scanf("%f", &ind_trasf);
printf(">> Indennita' di mensa: ");
scanf("%f", &ind_mensa);
printf(">> Festivita' non godute: ");
scanf("%f", &fest_ng);
printf(">> Ferie non godute: ");
scanf("%f", &fer_ng);
printf(">> Mensilita' Aggiuntive: ");
scanf("%f", &mens_agg);
printf(">> Indennita' di malattia: ");
scanf("%f", &ind_mal);
printf("\n>> Figli: ");
printf("\tSani Minori di 3 anni: ");
scanf("%d", &fsmin);
printf("\n\tSani Maggiori di 3 anni: ");
scanf("%d", &fsmag);
printf("\tHandicap Minori di 3 anni: ");
scanf("%d", &fhmin);
printf("\tHandicap Maggiori di 3 anni: ");
scanf("%d", &fhmag);
printf("\n>> Numero di giorni di trasferta: ");
scanf("%d", &trasf);
if (trasf>0)
{
printf("\tEstero (e), o Italia (i)? ");
trasf=getch();
}
return 0;
}