Ho preso il codice ed ho provato a compilarlo, non è malaccio, con poche modifiche diventa ANSI C (e sembra funzioni):
Codice:
--- oldTiuz.c 2005-01-21 00:56:26.000000000 +0100
+++ Tiuz.c 2005-01-21 01:02:12.000000000 +0100
@@ -1,5 +1,5 @@
#include <stdio.h>
-#include <conio.h>
+#include <string.h>
#include <stdlib.h>
#define max 10
typedef struct{
@@ -14,15 +14,16 @@
};
struct elemento *crea_lista();
int f;
-main()
+int vuoiContinuare(void);
+int main()
{
- clrscr();
f=1;
do{
struct elemento *punt_lista;
punt_lista = crea_lista();
vuoiContinuare();
}while(f==1);
+ return 0;
}
struct elemento *crea_lista()
{
@@ -35,19 +36,19 @@
printf("\nInserisci descrizione: ");
scanf("%s", p->inf.descrizione);
printf("\nInserisci prezzo: ");
- scanf("%i",p->inf.prezzo);
+ scanf("%i",&p->inf.prezzo);
printf("\nInserisci quantita': ");
- scanf("%i",p->inf.quantita);
+ scanf("%i",&p->inf.quantita);
}
return(p);
}
int vuoiContinuare() {
int ok=0;
- int continua=' ';
+ char continua=' ';
while (ok == 0) {
printf("\nVuoi continuare (s/n)?");
fflush(stdin);
- scanf("%c",&continua);
+ scanf(" %c",&continua);
if (continua == 's' || continua == 'S') {
ok=1;
f=1;
@@ -59,6 +60,7 @@
return f;
}
}
+ return 0;
}
void leggiStringa(char *strMessaggio, char *strDaLeggere, int maxLung) {
int ok=0;
@@ -66,7 +68,7 @@
do {
printf("\n%s ", strMessaggio);
fflush(stdin);
- gets(temp);
+ fgets(temp,255,stdin);
if ( strlen(temp) > maxLung )
printf ("\nTROPPO LUNGA!\n");
else
gets non era scorretto ma è pericoloso; i return sono d'obbligo in ANSI C (ma perché vuoiContinuare() ritorna un int se modifica una variabile globale?
); conio.h non è standard C e serve a poco (io non ce l'ho e mettendolo dava errori, ma tanto non avevo voglia di pulirmi lo schermo
); se non ti raccapezzi su qualcosa, chiedi pure.