#include #include int main(int argc, char **argv){ int i, k, n, l; FILE *lire, *ecrire; char *t_lire, *t_ecrire; if( argc != 4 ){ fprintf(stderr,"usage : %s fichier_in fichier_out taille\n", argv[0]); return 1; } lire=fopen(argv[1],"r"); if( lire == NULL ){ fprintf(stderr,"impossible d'ouvrir le fichier %s\n", argv[1]); return 2; } ecrire=fopen(argv[2],"w"); if( ecrire == NULL ){ fprintf(stderr,"impossible d'ouvrir le fichier %s\n", argv[1]); return 2; } l=k=atoi(argv[3]); /*calculer la taille de tampon n=2 power k si k>0 * * et 0 si k=0 */ n=0; for(n=1; k>0 ; k--){ n=n*k; } if( n==0 ){ setbuf(lire,NULL); setbuf(ecrire,NULL); } else{ t_lire=malloc(n); t_ecrire=malloc(n); if( t_lire == NULL || t_ecrire == NULL ){ fprintf(stderr,"malloc\n"); return EXIT_FAILURE; } setvbuf(lire, t_lire, _IOFBF, n); setvbuf(ecrire, t_ecrire, _IOFBF, n); } for(;;){ i = fgetc(lire); if( i == EOF ){ break; } fputc( i , ecrire ); } if ( n > 0 ){ free(t_lire); free(t_ecrire); } fclose(lire); fclose(ecrire); return 0; }