#include "cgi.h" // modulo di prova... ult mod 27-11-02
/***
Gennaio 2017 --- cgi lanciato da modulo html (copia/incolla in file .html)
Prova CGI2017-Linguaggio C: includi solo "cgi.h". Funzione: cscanf(char nomevariabile[], char fmt[], ...);
***/
void stampavettore(ARRAY v[]) /// tipo print_r() del PHP
{
int i;
for (i=0; v[i]; i++)
printf("v[%d]=%s
\n",i,v[i]);
}
int vettoreint(char *a[],int v[])
/// Trasformare un ARRAY in un vettore di interi (usa atof() per i double)
{
int i;
for(i=0; a[i] != NULL; i++)
v[i]=atoi(a[i]);
return i;
}
double somma(int v[],int dim)
{
double s=0.0;
int i;
for (i=0; i < dim; i++)
s+=v[i];
return s;
}
int main()
{
int i,num;
char str[80];
ARRAY V[100]; /// vettore non tipizzato: sempre un vettore di stringhe
/// con atoi() o atof() lo trasformi in numeri
double d;
float f[5];
int v[100]; /// vettore classico
cgi();
testa(); /// Vanno sempre lanciate a inizio programma CGI
/// cscanf() sta per CgiScanf() ==> scanf x cgi !!!
cscanf("intero","%d",&num); /// Attenzione Scanf e non scanf !!!!
printf("intero letto dal modulo=%d
\n",num);
cscanf("stringa1","%s",str); /// %S = stringa, senza spazi
printf("stringa senza spazi=%s
\n",str);
cscanf("stringa2","%S",str); /// %S = stringa, copio anche gli spazi
printf("stringa anche con spazi=%s
\n",str);
cscanf("double","%lf",&d);
printf("double letto dal modulo=%lf
\n",d);
cscanf("vettore5f","%f %f %f %f %f",&f[0],&f[1],&f[2],&f[3],&f[4]);
for (i=0; i < 5; i++)
printf("vettoredi5float[%d]=%f
\n",i,f[i]);
printf("
\n");
cscanf("vettore","%V",V); /// %P = vettore di qualsiasi dimensione
stampavettore(V);
num=vettoreint(V,v); /// da ARRAY V[] a int v[]
printf("
Elementi letti da vettore=%d, media=%lf",num,somma(v,num)/num);
debug(); /// puoi togliere o mettere in commento... tipo phpinfo()
piede(); /// va chiamata a fine programma CGI
return 0;
}