Mia libreria Apertura di file (sia scrittura che lettura a scelta). FILE * aprifile(){ char nome[max],modalita[max]; FILE *fp; printf("Inserisci il nome del file da aprire:\n"); scanf("%s",nome); printf("Inserisci la modalita di apertura del file (lettura-scrittura):\n"); scanf("%s",modalita); if(strcmp(modalita,"lettura")==0){ fp=fopen(nome,"r"); } if(strcmp(modalita,"scrittura")==0){ fp=fopen(nome,"w"); } if(fp==NULL){ printf("Error in opening file!!\n"); exit(1); }else{ printf("Apertura corretta!!\n"); } return (fp); } Lettura di stringa int leggi_stringa(char str[]){ int indice=0; char carat; while(((carat=getchar())!=EOF)&&(carat!='\n')){ str[indice]=carat; indice++; } str[indice]='\0'; return (carat); } (Prototipo del main, con strtok): while(leggi_stringa(stringa)!=EOF){ str= strtok(stringa, separatori); while(str!=NULL){ printf("%s",str); str=strtok(NULL,separatori); } } Esempio di leggi_stringa con due terminazioni diverse int leggi_stringa(char str[],int terminatore){ indice=0; while(((carat=getchar())!=terminatore)&&(carat!=EOF)){ str[indice]=carat; indice ++; } str[indice]='\0'; return(carat); } main: leggi_stringa(primo,'\\') else leggi_stringa(secondo,'\n') Funzione di scambio void swap(size_t *a,size_t *b){ size_t tmp; tmp=*b; *b=*a; *a=tmp; return; } Funzione di allocazione (valida per ogni tipo possibile anke quelli creati da me) void *my_malloc(size_t size){ void *p; if(!(p=malloc(size))){ fprintf(stderr,"Allocazione fallita"); exit(0); } return p; } esempio di my_malloc (lettura da file di un numero dipendenti e successiva allocazione di un vettore di strutture): typedef struct _myStruct1{ int matr; char cognome[100]; char nome[100]; } myStruct1; myStruct1 *vet1; fscanf(fp,"%d",&ndip); printf("%d",ndip); vet1=my_malloc(ndip*(sizeof(myStruct1)));