#include
#include
#define FILEIN "./filetxt/mail.txt"
#define FILEOUT "./filetxt/mail"
#define START 'D'
#define END 'E'
#define STOP 'S'
#define STRLEN 1024
#define L_MIN 1
#define L_MAX 10
typedef FILE* pfile;
typedef char* pchar;
typedef float* pfloat;
int stringa_contiene_char(pchar ps, char carattere)
{
while (*ps!='\0')
{
if (*ps==carattere) return 1;
ps++;
}
return 0;
}
int inputRequest(pchar question, pchar pinput, unsigned strlen)
{
unsigned len;
printf("%s: ",question);
return ((len=scanf("%s",pinput))L_MAX)) printf("Inserisci un numero compreso tra %d e %d\n",L_MIN,L_MAX);
else
{
printf("Ho ricevuto %d.\n",lb);
check=0;
}
}
while (check);
if ((buffer=(pfloat)malloc(sizeof(float)*lb))==NULL) goto err_mem;
if ((pfr=fopen(FILEIN,"r"))==NULL) goto err_file_r;
ns=nd=nr=i=n=0;
do /*in questo caso meglio usare il break*/
{
fscanf(pfr,"%s",s);
nr++;
if (stringa_contiene_char(s,START))
{
ns++;
check=1;
while (check)
{
fscanf(pfr,"%s",s);
nr++;
if (!stringa_contiene_char(s,END))
{
buffer[i]=atof(s);
nd++;
printf("nr=%u, ns=%u, nd=%u -> Letto: %.2f\n",nr,ns,nd,buffer[i]);
i++;
if (i>=lb)
{
save_buffer(FILEOUT,n,buffer,i);
printf("Scrivo il file: %s.%u.txt\n",FILEOUT,n);
n++;
i=0;
}
}
else check=0;
}
}
}
while (!stringa_contiene_char(s,STOP));
if (i)
{
save_buffer(FILEOUT,n,buffer,i);
printf("Scrivo il file: %s.%u.txt\n",FILEOUT,n);
}
fclose(pfr);
return 0;
err_file_r:
printf("Errore lettura file\n"); return EXIT_FAILURE;
err_mem:
printf("Errore memoria\n"); return EXIT_FAILURE;
}