From 22fc1af266d08f7ae9975e955073e6f40205dbd6 Mon Sep 17 00:00:00 2001 From: Tom Moguljak Date: Thu, 14 Sep 2023 16:01:56 +0200 Subject: [PATCH] Ajout de l'exo 1 TP2 --- README.md | 4 +++- TP2/Exo1/copy.c | 35 +++++++++++++++++++++++++++++++++++ TP2/Exo1/copy2.c | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 TP2/Exo1/copy.c create mode 100644 TP2/Exo1/copy2.c diff --git a/README.md b/README.md index a50297b..5d0ea46 100644 --- a/README.md +++ b/README.md @@ -282,4 +282,6 @@ XXXXXXXX BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB |CCCCCCCCCCCCCCCC| >Est-ce conforme à ce que l'on a vu en cours concernant l'alignement en mémoire ? ->L'alignement en mémoire est conforme à ce que l'on a vu en cours car les adresses sont alignées sur 16 octets. \ No newline at end of file +>L'alignement en mémoire est conforme à ce que l'on a vu en cours car les adresses sont alignées sur 16 octets. + +# TP 2 : Fichiers \ No newline at end of file diff --git a/TP2/Exo1/copy.c b/TP2/Exo1/copy.c new file mode 100644 index 0000000..b45f423 --- /dev/null +++ b/TP2/Exo1/copy.c @@ -0,0 +1,35 @@ +#include +#include +#include + +#define BLOCK_SIZE 1 + + +int main(int argc, char *argv[]) +{ + int fin, + fout; + char buf[BLOCK_SIZE]; + + assert( argc == 3 ); + + fin = open(argv[1],O_RDONLY); + assert( fin >= 0 ); + + fout = open(argv[2],O_CREAT|O_WRONLY|O_TRUNC,0600); + assert( fout >= 0 ); + + while(1){ + ssize_t nb_read; + nb_read = read(fin,buf,BLOCK_SIZE); + if (nb_read <= 0) + break; + write(fout,buf,nb_read); + } + + close(fin); + close(fout); + + return 0; +} + diff --git a/TP2/Exo1/copy2.c b/TP2/Exo1/copy2.c new file mode 100644 index 0000000..80caa81 --- /dev/null +++ b/TP2/Exo1/copy2.c @@ -0,0 +1,36 @@ +#include +#include +#include + + +#define BLOCK_SIZE 1 + + +int main(int argc, char *argv[]) +{ + FILE *fin, + *fout; + char buf[BLOCK_SIZE]; + + assert( argc == 3 ); + + fin = fopen(argv[1],"r"); + assert( fin >= 0 ); + + fout = fopen(argv[2],"w"); + assert( fout >= 0 ); + + while(1){ + ssize_t nb_read; + nb_read = fread(buf,BLOCK_SIZE,1,fin); + if (nb_read <= 0) + break; + fwrite(buf,nb_read,1,fout); + } + + fclose(fin); + fclose(fout); + + return 0; +} +