#include//NOTA_3 #include #define nc() for(;(getchar())!='\n';); #define BUFSIZE 10000 int main() { char*incoming(),*input,*output,c; char*sh[]={"pa","ra","ple","gi","co"," ","in","gua","ri","bi","le","!"}; typedef void elab(char*,char*,int,int);//NOTA_1 elab defmod; int overwrite=0,j=0,select,incoming2(char*),tmp,sht=0; printf("input file : "); input=incoming();//PATHNAME FILE DI INPUT printf("Sovrascrivere il file dopo l'operazione ?(s/n) "); if(incoming2(&c)) ++overwrite;//SOVRASCRIVERE INPUT DOPO ELABORAZIONE ? else {printf("output file : "); output=incoming();}//EV. PATHNAME FILE OUTPUT printf("\n\n1) default mode\n2) insert mode\n3) exit\n\n_"); for(incoming2(&c);c<'1'||c>'3';incoming2(&c)) {++j; if(j>2&&j<15) printf("! %s _",sh[sht++]); else if(j==15) {j=0;sht=0;putchar('_');} else putchar('_');} select=c-48;//SELEZIONE: DEFAULT-INSERT-EXIT defmod(input,output,overwrite,select); printf("\n\nFile processato .\n"); } char*incoming() { char c,*p; int i=0,t=sizeof(char); for(p=(char*)malloc(t);(c=getchar())!='\n';p=(char*)realloc(p,(i+1)*t)) if(p) *(p+i++)=c; else {fprintf(stderr,"memoria esaurita\n");exit(1);} return p; } int incoming2(char*c) { *c=getchar();nc(); if(*c=='s') return 1; return 0; } void defmod(char*in,char*out,int f,int select) { void cpf(int*,int*),tara(char*,int,int*),sost(char*,char*,char*,char*); char c,*incoming(),buf1[BUFSIZE+1],buf2[BUFSIZE*2],*p1=buf1,*p2=buf2; char*insmod(),*ins,*old,*new; int indf,outdf,dummy=0,i,o,count,tmp,ftmp=0,t,dep=0; if(!strcmp(in,out)) ++dummy;//IL FILE DI IN == QUELLO DI OUT if((indf=open(in,O_RDWR))==-1)//APERTO IN_FILE {fprintf(stderr,"Impossibile accedere a %s\n",in);exit(2);} if(!f&&!dummy&&(creat(out,0666))==-1)//CRTEATO OUT_FILE {fprintf(stderr,"Impossibile creare %s\n",out);exit(3);} if(!f&&!dummy&&(outdf=open(out,O_WRONLY))==-1)//APERTO OUT_FILE {fprintf(stderr,"Impossibile accedere a %s\n",out);exit(4);} if(!f&&!dummy&&select==1) a:for(;count=read(indf,buf1,BUFSIZE);write(outdf,buf2,count+o)) for(i=o=0;i++BUFSIZE*2+1 elementi creerebbe un errore . ps:non e' stata rilasciata la memoria con free()*/