begin process at 2010 09 06 12:04:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > DÉCOUPAGE DE FICHIERS

DÉCOUPAGE DE FICHIERS


 Information sur la source

Note :
Aucune note
Catégorie :Application Niveau :Débutant Date de création :04/11/2002 Date de mise à jour :06/11/2002 21:05:32 Vu / téléchargé :4 636 / 120

Auteur : BigOliver

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Voici le code les gars! J'espère que vous n'allez plus rouspéter. Par défaut, le découpage se fait sur le c: , pour le faire sur les autres lecteurs, il faut utiliser l'option réseau.

Source

  • #include<fcntl.h>
  • #include<stdio.h>
  • #include<conio.h>
  • #include<string.h>
  • #include<stdlib.h>
  • #include<dir.h>
  • #include<dos.h>
  • #include<io.h>
  • #define BUFSIZE 1024
  • #define effln(y) eff(1,y)
  • char dirsrc[201]="",dirdest[201]="",ordisrc[81]="",ordidest[81]="",inputfile[81];
  • char O_COPY[]=" Wincut 2.0 Copyright Olivier MBIELEU - Avril 2002"; // Variable pour le copyright. Si elle est modifiée, wincut ne pourra plus regenérer les fichiers de la version précédente
  • char Tempmdf[201],Tempsrc[201],Tempdir[201]; // Variables temporaires pour
  • int nbfile=0,Taille=1000,filesupp=0;
  • void affmess(char *s1,int col,int bgc){ //Cette Fonction affiche un message (s1) avec la couleur col et le bgcolor bgc
  • char tmp[81]; char* ncopy(char*,char*,int);
  • textcolor(col);textbackground(bgc);gotoxy(2,18);
  • if(strlen(s1)>78){
  • ncopy(s1,tmp,78);
  • cprintf("%s",tmp);
  • gotoxy(2,19);cprintf("%s",s1+79);
  • }
  • else cprintf("%s",s1);
  • textcolor(15);gotoxy(1,1);
  • };
  • void effmess(void){ //Cette Fonction efface le message affiché par affmess
  • //void eff(int,int);
  • effln(18);effln(19);
  • };
  • void afftaille(void){ // Cette fonction affiche la taille des petits fichiers à créer
  • char s[91]="Wincut 2.0 -- La Taille Des Fichiers Découpés Est De ",s1[10];
  • itoa(Taille,s1,10);strcat(s,s1);strcat(s," Ko");
  • int n=strlen(s);int x=(79-n)/2+1;
  • gotoxy(1,25);textbackground(1);textcolor(14);clreol();
  • gotoxy(x,25);cprintf("%s",s);
  • textbackground(0);textcolor(15);
  • };
  • //Function Error
  • void error(char *s1,char* s2){ // Cette Fonction affiche les messages d'erreurs
  • void eff(int,int);
  • textbackground(4);textcolor(14);
  • gotoxy(1,21);clreol();
  • cprintf(" Erreur : %s",s1);
  • if(s2[0])cprintf(" : %s",s2);
  • getch();textcolor(15);textbackground(0);
  • effln(21);effln(22);effln(23);
  • };
  • //Op?rations Sur Les Chaines De Caract?res
  • char *ncopy(char *src,char *dest, int n){ // Cette Fonction copie n caractéres de src à dest = strncpy
  • dest[0]='\0';
  • if(n<=0)return dest;
  • int i=-1;
  • while(i++,i<n && src[i]) dest[i]=src[i];
  • dest[i]='\0';
  • return dest;
  • };
  • char *addext(char *s,char *ext){ // Cette fonction ajoute une extension (fich.cpp)
  • strcat(s,".");strcat(s,ext);
  • return s;
  • };
  • char *retext(char *src,char *file,char *ext){ // Cette Fonction retire l'extension (fich.cpp)
  • int i=0;
  • while(src[i] && src[i]!='.') i++;
  • if(src[i]=='\0'){ext[0]='\0';strcpy(file,src);}
  • else{ncopy(src,file,i);strcpy(ext,&src[i+1]);}
  • return file;
  • };
  • char * cutspace(char* s){ // Cette fonction retire les espaces présent dans une chaine
  • int i=0,j=-1;char tmp[200];
  • do{
  • j++;
  • if(s[j]!=' ')tmp[i++]=s[j];
  • }while(s[j]);
  • strcpy(s,tmp);
  • return s;
  • };
  • char* read(char *rep,int x1,int y,int lg){ // Cette fonction lit une chaine de caractères à l'écran
  • int x=x1,i=0;
  • char a;rep[0]='\0';
  • gotoxy(x1-3,y);cprintf(":->");
  • while(a=getch(),a!=13 && a!=27){
  • if(a!=8){if(x<=x1+lg){i++;gotoxy(x,y);cprintf("%c",a);
  • rep[i-1]=a;x+=1;}else printf("\a");
  • }
  • else if(x>x1){x-=1;rep[--i]='\0';gotoxy(x,y);cprintf(" ");gotoxy(x,y);
  • } else printf("\a");
  • };rep[i]='\0';
  • return cutspace(rep);
  • };
  • //Menus
  • void actbgcolor(void){textcolor(15);textbackground(4);};
  • void noactbgcolor(void){textcolor(15);textbackground(1);};
  • void eff(int x,int y){textcolor(15);textbackground(0);gotoxy(x,y);clreol();};
  • char* makesrcfile(void); int creatfiles(int); int restorefile(void);
  • void genetverif(void){ // Cette fonction génére les petits fichiers
  • char tmp[105],tmp1[72];
  • int ok=0;
  • affmess(" Entrer Le Nom Du R?pertoire o? se Trouve le Fichier Source(ex Olivier)",14,0);
  • read(dirsrc,4,19,70);
  • effmess();
  • affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
  • read(inputfile,4,19,30);
  • effmess();
  • strcpy(tmp,"c:/");
  • strcat(tmp,dirsrc);if(dirsrc[0]) strcat(tmp,"/");strcat(tmp,inputfile);
  • if(access(tmp,00)){
  • error("Le Fichier Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };
  • if(!ok){
  • affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
  • read(dirdest,4,19,75);
  • effmess();
  • strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • if(!ok){
  • int srcfile;
  • makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
  • creatfiles(srcfile);
  • _dos_close(srcfile);
  • };
  • };
  • if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • };
  • void menugen(void){
  • char *Tab[]={" Machine Locale "," Locale->R?seau "," R?seau->Locale "," R?seau->R?seau "};
  • int i=0,ch=12,xd=5,yd=3,y;
  • char mess[161];
  • noactbgcolor();
  • gotoxy(xd,yd);cprintf("%s",Tab[0]);
  • gotoxy(xd,yd+2);cprintf("%s",Tab[1]);
  • gotoxy(xd,yd+4);cprintf("%s",Tab[2]);
  • gotoxy(xd,yd+6);cprintf("%s",Tab[3]);
  • i=0;y=yd;
  • while(ch!=27){
  • actbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);gotoxy(1,1);
  • ch=getch();
  • noactbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);
  • switch(ch){
  • case 72:if(i==0){i=3;y=yd+6;}else {i--;y-=2;};break;
  • case 80:if(i==3){i=0;y=yd;} else {i++;y+=2;};break;
  • case 13:effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
  • switch(i){
  • case 0:ordisrc[0]='\0';ordidest[0]='\0';genetverif();
  • break;
  • case 1:{ordisrc[0]='\0';
  • char tmp[105],tmp1[72];
  • int ok=0;
  • affmess(" Entrer Le Nom Du R?pertoire o? se Trouve le Fichier Source(ex Olivier)",14,0);
  • read(dirsrc,4,19,70);
  • effmess();
  • affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
  • read(inputfile,4,19,30);
  • effmess();
  • strcpy(tmp,"c:/");
  • strcat(tmp,dirsrc);if(dirsrc[0])strcat(tmp,"/");strcat(tmp,inputfile);
  • if(access(tmp,00)){
  • error("Le Fichier Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };
  • if(!ok){
  • affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
  • read(ordidest,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
  • read(dirdest,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
  • read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
  • strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • if(!ok){
  • int srcfile;char* makesrcfile(void); int creatfiles(int);
  • makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
  • creatfiles(srcfile);
  • _dos_close(srcfile);
  • };
  • };
  • if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • break;
  • };
  • case 2:{ordidest[0]='\0';
  • char tmp[105],tmp1[72];
  • int ok=0;
  • affmess(" Entrer Le Nom R?seau De La Machine Source",14,0);
  • read(ordisrc,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Source",14,0);
  • read(dirsrc,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom du R?portoire o? Se Trouve Le Fichier Source (ex Carole)",14,0);
  • read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
  • effmess();
  • affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
  • read(inputfile,4,19,30);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
  • strcat(tmp,dirsrc);strcat(tmp,"/");strcat(tmp,inputfile);
  • if(access(tmp,00)){
  • error("Le Fichier Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };
  • if(!ok){
  • affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
  • read(dirdest,4,19,75);
  • effmess();
  • strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • if(!ok){
  • int srcfile;
  • makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
  • creatfiles(srcfile);
  • _dos_close(srcfile);
  • };
  • };
  • if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • break;};
  • case 3:{ordidest[0]='\0';
  • char tmp[105],tmp1[72];
  • int ok=0;
  • affmess(" Entrer Le Nom R?seau De La Machine Source",14,0);
  • read(ordisrc,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Source",14,0);
  • read(dirsrc,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom du R?portoire o? Se Trouve Le Fichier Source (ex Carole)",14,0);
  • read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
  • effmess();
  • affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
  • read(inputfile,4,19,30);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
  • strcat(tmp,dirsrc);strcat(tmp,"/");strcat(tmp,inputfile);
  • if(access(tmp,00)){
  • error("Le Fichier Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };
  • if(!ok){
  • affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
  • read(ordidest,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
  • read(dirdest,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
  • read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
  • strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • if(!ok){
  • int srcfile;
  • makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
  • creatfiles(srcfile);
  • _dos_close(srcfile);
  • };
  • };
  • if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • break;}
  • };
  • return;
  • };
  • };
  • effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
  • };
  • void menurest(void){
  • char *Tab[]={" Machine Locale "," Locale->R?seau "," R?seau->Locale "," R?seau->R?seau "};
  • int i=0,ch=12,xd=20,yd=3,y;
  • char mess[161];
  • noactbgcolor();
  • gotoxy(xd,yd);cprintf("%s",Tab[0]);
  • gotoxy(xd,yd+2);cprintf("%s",Tab[1]);
  • gotoxy(xd,yd+4);cprintf("%s",Tab[2]);
  • gotoxy(xd,yd+6);cprintf("%s",Tab[3]);
  • i=0;y=yd;
  • while(ch!=27){
  • actbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);gotoxy(1,1);
  • ch=getch();
  • noactbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);
  • switch(ch){
  • case 72:if(i==0){i=3;y=yd+6;}else {i--;y-=2;};break;
  • case 80:if(i==3){i=0;y=yd;} else {i++;y+=2;};break;
  • case 13:effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
  • switch(i){
  • case 0:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
  • affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
  • read(dirsrc,4,19,51);
  • effmess();
  • strcpy(tmp,"c:/");
  • if(dirsrc[0]){strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");}
  • else strcat(tmp,"wct.lst");
  • if(access(tmp,00)){
  • error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };
  • if(!ok){
  • affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
  • read(dirdest,4,19,51);
  • effmess();
  • strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • };
  • if(!ok){makesrcfile();
  • restorefile();
  • }
  • if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • break;
  • };
  • case 1:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
  • affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
  • read(dirsrc,4,19,51);
  • effmess();
  • strcpy(tmp,"c:/");
  • if(dirsrc[0]){strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");}
  • else strcat(tmp,"wct.lst");
  • if(access(tmp,00)){
  • error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };
  • if(!ok){
  • affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
  • read(ordidest,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
  • read(dirdest,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
  • read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
  • strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • };
  • if(!ok){makesrcfile();
  • restorefile();
  • }
  • if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • break;};
  • case 2:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
  • affmess(" Entrer Le Nom R?seau De La Machine Source (WCT.LST)",14,0);
  • read(ordisrc,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Source (WCT.LST)",14,0);
  • read(dirsrc,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
  • read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
  • strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");
  • affmess("Patienter ...",14,0);
  • if(access(tmp,00)){
  • error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };effmess();
  • if(!ok){
  • affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
  • read(dirdest,4,19,51);
  • effmess();
  • strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");affmess("Patienter ...",14,0);
  • FILE *fp=fopen(tmp,"w");effmess();
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • };
  • if(!ok){makesrcfile();
  • restorefile();
  • }
  • if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • break;};
  • case 3:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
  • affmess(" Entrer Le Nom R?seau De La Machine Source (WCT.LST)",14,0);
  • read(ordisrc,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Source (WCT.LST)",14,0);
  • read(dirsrc,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
  • read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
  • strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");
  • affmess("Patienter ...",14,0);
  • if(access(tmp,00)){
  • error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
  • ok=1;
  • };effmess();
  • if(!ok){
  • affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
  • read(ordidest,4,19,19);
  • effmess();
  • affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
  • read(dirdest,4,19,21);
  • effmess();
  • affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
  • read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
  • effmess();
  • strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
  • strcat(tmp,dirdest);strcpy(tmp1,tmp);
  • strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
  • if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
  • effmess();
  • if(c=='o' || c=='O'){
  • if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
  • }else ok=1;
  • }
  • else {fclose(fp);remove(tmp);};
  • };
  • if(!ok){makesrcfile();
  • restorefile();
  • }
  • if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
  • else {affmess(" Op?ration Effectu?e Avec Succ?s Appuyer Sur Une Touche ...",14,1);getch();effmess();};
  • break;};
  • };
  • return;
  • };
  • };
  • effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
  • };
  • void menuoption(void){
  • static char *Tabopt[]={" Taille "," Supprimer "};
  • int i=0,ch=12,xd=35,yd=3,y;
  • char mess[161];
  • noactbgcolor();
  • gotoxy(xd,yd);cprintf("%s",Tabopt[0]);
  • gotoxy(xd,yd+2);cprintf("%s",Tabopt[1]);
  • i=0;y=yd;
  • while(ch!=27){
  • actbgcolor();gotoxy(xd,y);cprintf("%s",Tabopt[i]);gotoxy(1,1);
  • ch=getch();
  • noactbgcolor();gotoxy(xd,y);cprintf("%s",Tabopt[i]);
  • switch(ch){
  • case 72:if(i==0){i=1;y=yd+2;} else {i--;y-=2;};break;
  • case 80:if(i==1){i=0;y=yd;} else {i++;y+=2;};break;
  • case 13:effln(yd);effln(yd+2);//effln(yd+4);effln(yd+6);
  • switch(i){
  • case 0:{char s[11];int tel;
  • affmess(" Entrer La Taille Des Fichiers D?coup?s (En Ko)",14,0);
  • read(s,4,19,5);
  • effmess();tel=atoi(s);
  • if(tel>0) Taille=tel;
  • afftaille();
  • break;
  • };
  • case 1:{ if(filesupp){
  • filesupp=0;
  • Tabopt[1][strlen(Tabopt[1])-2]=' ';
  • }
  • else {
  • filesupp=1;
  • Tabopt[1][strlen(Tabopt[1])-2]='';
  • };
  • break;
  • };
  • };
  • return;
  • };
  • };
  • effln(yd);effln(yd+2);//effln(yd+4);effln(yd+6);
  • };
  • void affaide(void){
  • int y=3;
  • textbackground(0);textcolor(14);
  • gotoxy(1,y++);cprintf("- Wincut est un programme qui d?coupe de gros fichiers en de petits fichiers.");
  • gotoxy(1,y++);cprintf("- Son but principal est de permettre de transporter de gros fichiers de machine en machine.");y++;
  • gotoxy(1,y++);cprintf("- Le menu G?n?rer permet de d?couper de gros fichiers. Il pr?sente les options");
  • gotoxy(1,y++);cprintf(" Machine Locale qui permet de g?n?rer les petits fichiers ? partir de la machi");
  • gotoxy(1,y++);cprintf(" ne locale, Locale->R?seau envoie les petits fichiers dans une machine distant");
  • gotoxy(1,y++);cprintf(" e, R?seau->Locale prend un gros fichier en r?seau et le d?coupe dans la machi");
  • gotoxy(1,y++);cprintf(" ne locale, R?seau->R?seau qui prend un fichier en r?seau et envoie le r?sulta");
  • gotoxy(1,y++);cprintf(" t dans une autre machine distante.");
  • gotoxy(1,y++);cprintf("- Le menu Restaurer permet de reconstituer le gros fichier ? partir des petits.");
  • gotoxy(1,y++);cprintf(" Les options de ce menu ont la m?me signification que les options du menu pr?c");
  • gotoxy(1,y++);cprintf(" ?dent ? la seule diff?rence qu'ils s'appliquent aux petits fichiers.");
  • gotoxy(1,y++);cprintf("- Le menu Option permet de modifier la taille des petits fichiers ainsi que de ");
  • gotoxy(1,y++);cprintf(" supprimer ou non les petits fichiers lors de la Restauration.");
  • gotoxy(1,y++);cprintf("- Le menu Aide appelle cette Aide et Quitter de quitter le programme.");
  • textcolor(15+128);
  • gotoxy(1,y++);cprintf("- IMPORTANT! Les noms de fichiers doivent ?tre des noms Dos.");
  • textcolor(14);
  • gotoxy(1,y++);
  • gotoxy(1,y++);cprintf("- Wincut est un programme libre d'utilisation.");
  • gotoxy(1,y++);
  • gotoxy(1,y++);cprintf("- Copyright Avril 2002 -- Olivier MBIELEU (oliviermbieleu@yahoo.fr)");
  • gotoxy(1,1);
  • getch();
  • for(int x=3;x<=y;x++){
  • gotoxy(1,x);
  • clreol();
  • };
  • textcolor(15);
  • };
  • void mainmenu(void){
  • char *Tab[]={" G?n?rer "," Restaurer "," Options "," Aide "," Quitter "};
  • int i=0,x,xd=7,yd=1,ch=2;
  • noactbgcolor();gotoxy(1,1);clreol();
  • gotoxy(xd,yd);cprintf("%s",Tab[0]);
  • gotoxy(xd+15,yd);cprintf("%s",Tab[1]);
  • gotoxy(xd+30,yd);cprintf("%s",Tab[2]);
  • gotoxy(xd+45,yd);cprintf("%s",Tab[3]);
  • gotoxy(xd+60,yd);cprintf("%s",Tab[4]);
  • x=xd;i=0;afftaille();
  • while(1){
  • actbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);gotoxy(1,1);
  • ch=getch();
  • noactbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);
  • switch(ch){
  • case 75:if(i==0){i=4;x=xd+60;} else {i--;x-=15;};
  • break;
  • case 77:if(i==4){i=0;x=xd;} else {i++;x+=15;};
  • break;
  • case 16:
  • actbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);gotoxy(1,1);
  • affmess("Voulez-Vous Vraiment Quitter Ce Programme ?(o/n) : ",14,0);int c=getch();
  • if(c!='o' && c!='O'){
  • effmess();noactbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);
  • break;};
  • textcolor(15);textbackground(0);clrscr();return;
  • case 13:case 80:
  • actbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);gotoxy(1,1);
  • switch(i){
  • case 0:menugen();break;
  • case 1:menurest();break;
  • case 2:menuoption();break;
  • case 3:affaide();break;
  • case 4:affmess("Voulez-Vous Vraiment Quitter Ce Programme ?(o/n) : ",14,0);int c=getch();
  • if(c!='o' && c!='O'){
  • effmess();noactbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);
  • break;};
  • textcolor(15);textbackground(0);clrscr();return;
  • };
  • break;
  • };
  • };
  • };
  • //Fin des Menus
  • char *makesrcfile(void){ // Cette fonction reconstitue le fichier source (Gros fichier)
  • if(ordisrc[0]!='\0'){strcpy(Tempsrc,"//"); strcat(Tempsrc,ordisrc);}
  • else strcpy(Tempsrc,"c:");
  • if(dirsrc[0]!='\0'){strcat(Tempsrc,"/");strcat(Tempsrc,dirsrc);}
  • strcpy(Tempdir,Tempsrc);
  • strcat(Tempsrc,"/");strcat(Tempsrc,inputfile);
  • return Tempsrc;
  • };
  • char *makedestfile(char *dest){ // Cette fonction crée le nom du premier des petits fichiers (nbfile=1)
  • nbfile=1;dest[0]='\0';
  • if(ordidest[0]!='\0'){strcpy(Tempmdf,"//");strcat(Tempmdf,ordidest);}
  • else strcpy(Tempmdf,"c:");
  • if(dirdest[0]!='\0'){strcat(Tempmdf,"/");strcat(Tempmdf,dirdest);}
  • char temp[13],input[201],ext[10];retext(inputfile,input,ext);
  • ncopy(input,temp,4);strcat(temp,"0");addext(temp,"wct");
  • strcpy(dest,Tempmdf); strcat(dest,"/");strcat(dest,temp);
  • return dest;
  • };
  • char *makendestfile(char *dest){ // Cette fonction crée les autres noms des petits fichiers (nbfile++)
  • nbfile++; char temp[13],tmp[5],input[201],ext[10];retext(inputfile,input,ext);
  • ncopy(input,temp,4);strcat(temp,itoa(nbfile-1,tmp,10));addext(temp,"wct");
  • strcpy(dest,Tempmdf); strcat(dest,"\\");strcat(dest,temp);
  • return dest;
  • };
  • int makewctlst(void){ // Cette Fonction crée le fichier .lst. Ce fichier contient la liste des petits fichiers ainsi que le nom original du fichier.
  • //D'autres informations pourront être ajoutées à ce fichier
  • char repdest[101],tmp1[5],mess[111],tmp2[13],tp[6],input[31],ext[11];
  • FILE *destfile;int i=0;
  • strcpy(repdest,Tempmdf);strcat(repdest,"/");strcat(repdest,"wct.lst");
  • destfile=fopen(repdest,"w");
  • if(!destfile){error("Impossible De Cr?er WCT.LST","Op?ration Annul?e");perror("\n");return 0;}
  • retext(inputfile,input,ext);ncopy(input,tmp1,4);
  • strcpy(mess,"-- Attention !! Ce Fichier Ne Doit Jamais etre Modifie --");fprintf(destfile,"%s\n",mess);
  • strcpy(mess,O_COPY);fprintf(destfile,"%s\n",mess);
  • strcpy(mess,"Taille=");strcat(mess,itoa(Taille,tmp2,10));fprintf(destfile,"%s Ko\n",mess);
  • strcpy(mess,"Fichier Source=");strcat(mess,inputfile);fprintf(destfile,"%s\n",mess);
  • while(i<nbfile){
  • strcpy(mess,"Fichier");strcat(mess,itoa(i,tp,10));strcat(mess,"=");
  • strcpy(tmp2,tmp1);strcat(tmp2,itoa(i,tp,10));addext(tmp2,"wct");
  • strcat(mess,tmp2);fprintf(destfile,"%s\n",mess);
  • i++;
  • };
  • strcpy(mess,"Wincut est un programme Libre d'utilisation ...");
  • fprintf(destfile,"\n%s\n",mess);
  • strcpy(mess,"Contact : oliviermbieleu@yahoo.fr");
  • fprintf(destfile,"\n%s\n",mess);
  • fclose(destfile);
  • return 1;
  • };
  • int filecopy(int src,int dest,int n){ //Cette fonction copie n*BUFSIZE octets du fichier source vers le fichier destination
  • unsigned i=0,nread=1,nwrite=1;
  • char buf[BUFSIZE];
  • while(i<n && nread>0){
  • if (_dos_read(src, buf, BUFSIZE, &nread) != 0){error("Copie De Fichier","Erreur Lors De La Lecture Du Fichier");perror("\n");return 0;}
  • if(_dos_write(dest, buf, nread, &nwrite) != 0){error("Copie De Fichier","Erreur Lors De L'?criture Dans Le Fichier");perror("\n");return 0;}
  • i++;
  • };
  • return 1;
  • };
  • int creatfiles(int srcfile){ // Cette fonction crée les petits fichiers. C'est elle qui est appelé par la fonction genetverif
  • int destfile;
  • char dfile[201],mes[]=" Cr?ation De ",mes1[251];
  • FILE *fp;
  • makedestfile(dfile);
  • while(!(eof(srcfile))){
  • strcpy(mes1,mes);strcat(mes1,dfile);
  • affmess(mes1,15,1);
  • fp=fopen(dfile,"w");fclose(fp);
  • if(_dos_open(dfile, O_WRONLY, &destfile)!=0){error("Impossible De Cr?er Les Fichiers R?sultats","");perror("\n");return 0;};
  • if(!filecopy(srcfile,destfile,Taille)) return 0;
  • _dos_close(destfile);
  • if(!(eof(srcfile))) makendestfile(dfile);
  • effmess();
  • };
  • makewctlst(); // Création du fichier wct.lst
  • return 1;
  • };
  • char *decoupe(char *src,char car,char *s2){ // Cette fonction coupe une chaine de caractere en deux à partir du caractere car
  • s2[0]='\0';if(!src[0]) return "";
  • for(int i=0;i<strlen(src) && car!=src[i];i++);
  • ncopy(src+i+1,s2,100);
  • cutspace(s2);
  • return s2;
  • };
  • int restorefile(void){ // Cette fonction reconstitue le gros fichier à partir des petits
  • char tmplst[201],tmp1[201],temp1src[201],temp2dest[201],temp3[11],moi[201];
  • FILE *fp;
  • strcpy(tmplst,Tempdir);strcat(tmplst,"/wct.lst");
  • fp=fopen(tmplst,"r");
  • if(!fp){error("Impossible D'ouvrir Le Fichier 'WCT.LST'","Op?ration Abandonn?e");return 0;};
  • fgets(tmp1,200,fp);
  • fgets(tmp1,200,fp);tmp1[strlen(tmp1)-1]='\0';
  • if(strcmp(tmp1,O_COPY)){error("Le Fichier WCT.LST Est Corrompu","Op?ration Abandonn?e");return 0;};
  • fgets(tmp1,200,fp);
  • fgets(tmp1,200,fp);tmp1[strlen(tmp1)-1]='\0';decoupe(tmp1,'=',inputfile);
  • if(ordidest[0]!='\0'){strcpy(temp2dest,"//");strcat(temp2dest,ordidest);}
  • else strcpy(temp2dest,"c:");
  • if(dirdest[0]!='\0'){strcat(temp2dest,"/");strcat(temp2dest,dirdest);}
  • strcat(temp2dest,"/");strcat(temp2dest,inputfile); //Fichier Destination
  • if(ordisrc[0]!='\0'){strcpy(temp1src,"//");strcat(temp1src,ordisrc);}
  • else strcpy(temp1src,"c:"); //Fichiers Sources
  • if(dirsrc[0]!='\0'){strcat(temp1src,"/");strcat(temp1src,dirsrc);}
  • FILE *fp1=fopen(temp2dest,"w");fclose(fp1);
  • int destfile, srcfile;
  • char oli1[70]="Reg?n?ration de ",oli2[70];
  • strcat(oli1,inputfile);strcat(oli1," A Partir De ");strcpy(oli2,oli1);
  • if(_dos_open(temp2dest, O_WRONLY, &destfile)!=0){error("Impossible de Cr?er",temp2dest);perror("\nOlivier");return 0;};
  • do{
  • fgets(tmp1,200,fp);tmp1[strlen(tmp1)-1]='\0';decoupe(tmp1,'=',temp3);
  • if(strlen(temp3)>3){
  • strcpy(moi,temp1src);strcat(temp1src,"/");strcat(temp1src,temp3);
  • if(_dos_open(temp1src,O_RDONLY,&srcfile)!=0){error("Impossible D'ouvrir Le Fichier Source","");perror("\nOlivier");return 0;};
  • strcat(oli1,temp3);
  • affmess(oli1,15,1);strcpy(oli1,oli2);
  • if(!filecopy(srcfile,destfile,32000)) return 0;
  • _dos_close(srcfile);if(filesupp)remove(temp1src);
  • strcpy(temp1src,moi);
  • effmess();
  • };
  • }while(strlen(temp3)>3);
  • _dos_close(destfile);fclose(fp);if(filesupp)remove(tmplst);
  • return 1;
  • };
  • void main(void){
  • textmode(C80);
  • clrscr();
  • mainmenu();
  • clrscr();
  • };
#include<fcntl.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<dir.h>
#include<dos.h>
#include<io.h>


#define BUFSIZE 1024
#define effln(y) eff(1,y)

char dirsrc[201]="",dirdest[201]="",ordisrc[81]="",ordidest[81]="",inputfile[81];
char O_COPY[]="  Wincut 2.0   Copyright  Olivier MBIELEU - Avril 2002"; // Variable pour le copyright. Si elle est modifiée, wincut ne pourra plus regenérer les fichiers de la version précédente
char Tempmdf[201],Tempsrc[201],Tempdir[201]; // Variables temporaires pour
int nbfile=0,Taille=1000,filesupp=0;

void affmess(char *s1,int col,int bgc){ //Cette Fonction affiche un message (s1) avec la couleur col et le bgcolor bgc 
  char tmp[81]; char* ncopy(char*,char*,int);
  textcolor(col);textbackground(bgc);gotoxy(2,18);
  if(strlen(s1)>78){
	ncopy(s1,tmp,78);
	cprintf("%s",tmp);
	gotoxy(2,19);cprintf("%s",s1+79);
    }
   else cprintf("%s",s1);
  textcolor(15);gotoxy(1,1);
 };

void effmess(void){  //Cette Fonction efface le message affiché par affmess
  //void eff(int,int);
  effln(18);effln(19);
 };

void afftaille(void){ // Cette fonction affiche la taille des petits fichiers à créer
  char s[91]="Wincut 2.0 -- La Taille Des Fichiers Découpés Est De ",s1[10];
  itoa(Taille,s1,10);strcat(s,s1);strcat(s," Ko");
  int n=strlen(s);int x=(79-n)/2+1;
  gotoxy(1,25);textbackground(1);textcolor(14);clreol();
  gotoxy(x,25);cprintf("%s",s);
  textbackground(0);textcolor(15);
 };

//Function Error

void error(char *s1,char* s2){ // Cette Fonction affiche les messages d'erreurs
  void eff(int,int);
  textbackground(4);textcolor(14);
  gotoxy(1,21);clreol();
  cprintf(" Erreur : %s",s1);
  if(s2[0])cprintf(" : %s",s2);
  getch();textcolor(15);textbackground(0);
  effln(21);effln(22);effln(23);
 };

//Op?rations Sur Les Chaines De Caract?res
char *ncopy(char *src,char *dest, int n){ // Cette Fonction copie n caractéres de src à dest = strncpy
  dest[0]='\0';
  if(n<=0)return dest;
  int i=-1;
  while(i++,i<n && src[i]) dest[i]=src[i];
  dest[i]='\0';
  return dest;
 };

char *addext(char *s,char *ext){ // Cette fonction ajoute une extension (fich.cpp)
  strcat(s,".");strcat(s,ext);
  return s;
 };

char *retext(char *src,char *file,char *ext){ // Cette Fonction retire l'extension (fich.cpp)
  int i=0;
  while(src[i] && src[i]!='.') i++;
  if(src[i]=='\0'){ext[0]='\0';strcpy(file,src);}
  else{ncopy(src,file,i);strcpy(ext,&src[i+1]);}
  return file;
 };

char * cutspace(char* s){ // Cette fonction retire les espaces présent dans une chaine
  int i=0,j=-1;char tmp[200];
  do{
    j++;
    if(s[j]!=' ')tmp[i++]=s[j];
  }while(s[j]);
  strcpy(s,tmp);
  return s;
 };

char* read(char *rep,int x1,int y,int lg){ // Cette fonction lit une chaine de caractères à l'écran
  int x=x1,i=0;
  char a;rep[0]='\0';
  gotoxy(x1-3,y);cprintf(":->");
  while(a=getch(),a!=13 && a!=27){
    if(a!=8){if(x<=x1+lg){i++;gotoxy(x,y);cprintf("%c",a);
		     rep[i-1]=a;x+=1;}else printf("\a");
	       }
	else if(x>x1){x-=1;rep[--i]='\0';gotoxy(x,y);cprintf(" ");gotoxy(x,y);
		  } else printf("\a");
   };rep[i]='\0';
  return cutspace(rep);
 };


//Menus

void actbgcolor(void){textcolor(15);textbackground(4);};
void noactbgcolor(void){textcolor(15);textbackground(1);};
void eff(int x,int y){textcolor(15);textbackground(0);gotoxy(x,y);clreol();};
char* makesrcfile(void); int creatfiles(int); int restorefile(void);

void genetverif(void){ // Cette fonction génére les petits fichiers
 char tmp[105],tmp1[72];
 int ok=0;
 affmess(" Entrer Le Nom Du R?pertoire o? se Trouve le Fichier Source(ex Olivier)",14,0);
 read(dirsrc,4,19,70);
 effmess();
 affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
 read(inputfile,4,19,30);
 effmess();
 strcpy(tmp,"c:/");
 strcat(tmp,dirsrc);if(dirsrc[0]) strcat(tmp,"/");strcat(tmp,inputfile);
 if(access(tmp,00)){
   error("Le Fichier Sp?cifi? N'existe Pas",tmp);
   ok=1;
  };
 if(!ok){
   affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
   read(dirdest,4,19,75);
   effmess();
   strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
   strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
   if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
	   effmess();
	   if(c=='o' || c=='O'){
	     if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
	   }else ok=1;
	  }
    else {fclose(fp);remove(tmp);};
   if(!ok){
     int srcfile;
     makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
     creatfiles(srcfile);
     _dos_close(srcfile);
    };
  };
 if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
  else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
 };

void menugen(void){
 char *Tab[]={" Machine Locale "," Locale->R?seau "," R?seau->Locale "," R?seau->R?seau "};
 int i=0,ch=12,xd=5,yd=3,y;
 char mess[161];
 noactbgcolor();
 gotoxy(xd,yd);cprintf("%s",Tab[0]);
 gotoxy(xd,yd+2);cprintf("%s",Tab[1]);
 gotoxy(xd,yd+4);cprintf("%s",Tab[2]);
 gotoxy(xd,yd+6);cprintf("%s",Tab[3]);
 i=0;y=yd;
 while(ch!=27){
   actbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);gotoxy(1,1);
   ch=getch();
   noactbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);
   switch(ch){
     case 72:if(i==0){i=3;y=yd+6;}else {i--;y-=2;};break;
     case 80:if(i==3){i=0;y=yd;}  else {i++;y+=2;};break;
     case 13:effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
	     switch(i){
	       case 0:ordisrc[0]='\0';ordidest[0]='\0';genetverif();
		      break;
	       case 1:{ordisrc[0]='\0';
		       char tmp[105],tmp1[72];
		       int ok=0;
		       affmess(" Entrer Le Nom Du R?pertoire o? se Trouve le Fichier Source(ex Olivier)",14,0);
		       read(dirsrc,4,19,70);
		       effmess();
			   affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
		       read(inputfile,4,19,30);
		       effmess();
		       strcpy(tmp,"c:/");
		       strcat(tmp,dirsrc);if(dirsrc[0])strcat(tmp,"/");strcat(tmp,inputfile);
		       if(access(tmp,00)){
			  error("Le Fichier Sp?cifi? N'existe Pas",tmp);
			  ok=1;
			};
		       if(!ok){
			 affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
			 read(ordidest,4,19,19);
			 effmess();
			 affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
			 read(dirdest,4,19,21);
			 effmess();
			 affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
			 read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
			 effmess();
			 strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
			 strcat(tmp,dirdest);strcpy(tmp1,tmp);
			 strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
			 if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
			 effmess();
			 if(c=='o' || c=='O'){
			    if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
			   }else ok=1;
			  }
			 else {fclose(fp);remove(tmp);};
			 if(!ok){
			   int srcfile;char* makesrcfile(void); int creatfiles(int);
			   makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
			   creatfiles(srcfile);
			   _dos_close(srcfile);
			  };
			 };
		       if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
			else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
		       break;
		      };
		   case 2:{ordidest[0]='\0';
		       char tmp[105],tmp1[72];
		       int ok=0;
		       affmess(" Entrer Le Nom R?seau De La Machine Source",14,0);
		       read(ordisrc,4,19,19);
		       effmess();
		       affmess(" Entrer Le Nom R?seau Du Disque Source",14,0);
		       read(dirsrc,4,19,21);
		       effmess();
		       affmess(" Entrer Le Nom du R?portoire o? Se Trouve Le Fichier Source (ex Carole)",14,0);
		       read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
		       effmess();
		       affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
		       read(inputfile,4,19,30);
		       effmess();
		       strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
		       strcat(tmp,dirsrc);strcat(tmp,"/");strcat(tmp,inputfile);
		       if(access(tmp,00)){
			 error("Le Fichier Sp?cifi? N'existe Pas",tmp);
			 ok=1;
			};
		       if(!ok){
			  affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
			  read(dirdest,4,19,75);
			  effmess();
			  strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
			  strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
			  if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
			  effmess();
			  if(c=='o' || c=='O'){
			     if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
			     }else ok=1;
			    }
			      else {fclose(fp);remove(tmp);};
			    if(!ok){
			    int srcfile;
			    makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
			    creatfiles(srcfile);
			    _dos_close(srcfile);
			  };
			 };
			 if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
			  else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
		      break;};
	       case 3:{ordidest[0]='\0';
		       char tmp[105],tmp1[72];
		       int ok=0;
		       affmess(" Entrer Le Nom R?seau De La Machine Source",14,0);
		       read(ordisrc,4,19,19);
		       effmess();
		       affmess(" Entrer Le Nom R?seau Du Disque Source",14,0);
		       read(dirsrc,4,19,21);
		       effmess();
		       affmess(" Entrer Le Nom du R?portoire o? Se Trouve Le Fichier Source (ex Carole)",14,0);
		       read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
		       effmess();
		       affmess(" Entrer Le Nom Du Fichier ? D?couper",14,0);
		       read(inputfile,4,19,30);
		       effmess();
		       strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
			   strcat(tmp,dirsrc);strcat(tmp,"/");strcat(tmp,inputfile);
		       if(access(tmp,00)){
			 error("Le Fichier Sp?cifi? N'existe Pas",tmp);
			 ok=1;
			};
		       if(!ok){
			  affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
			  read(ordidest,4,19,19);
			  effmess();
			  affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
			  read(dirdest,4,19,21);
			  effmess();
			  affmess(" Entrer Le Nom du R?portoire o? Copier Les Petits Fichiers (ex Carole)",14,0);
			  read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
			  effmess();
			  strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
			  strcat(tmp,dirdest);strcpy(tmp1,tmp);
			  strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
			  if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
			  effmess();
			  if(c=='o' || c=='O'){
			     if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
			     }else ok=1;
			    }
			      else {fclose(fp);remove(tmp);};
			    if(!ok){
			    int srcfile;
			    makesrcfile();_dos_open(Tempsrc,O_RDONLY,&srcfile);
			    creatfiles(srcfile);
			    _dos_close(srcfile);
			  };
			 };
			 if(ok) error("La G?n?ration des Fichiers Est Impossible !","");
			  else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
		      break;}
	      };
	     return;
    };
  };
 effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
 };

void menurest(void){
 char *Tab[]={" Machine Locale "," Locale->R?seau "," R?seau->Locale "," R?seau->R?seau "};
 int i=0,ch=12,xd=20,yd=3,y;
 char mess[161];
 noactbgcolor();
 gotoxy(xd,yd);cprintf("%s",Tab[0]);
 gotoxy(xd,yd+2);cprintf("%s",Tab[1]);
 gotoxy(xd,yd+4);cprintf("%s",Tab[2]);
 gotoxy(xd,yd+6);cprintf("%s",Tab[3]);
 i=0;y=yd;
 while(ch!=27){
   actbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);gotoxy(1,1);
   ch=getch();
   noactbgcolor();gotoxy(xd,y);cprintf("%s",Tab[i]);
   switch(ch){
     case 72:if(i==0){i=3;y=yd+6;}else {i--;y-=2;};break;
     case 80:if(i==3){i=0;y=yd;}  else {i++;y+=2;};break;
     case 13:effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
	     switch(i){
	       case 0:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
		      affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
		      read(dirsrc,4,19,51);
		      effmess();
		      strcpy(tmp,"c:/");
		      if(dirsrc[0]){strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");}
		       else strcat(tmp,"wct.lst");
		      if(access(tmp,00)){
			error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
			ok=1;
		      };
		      if(!ok){
		       affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
		       read(dirdest,4,19,51);
		       effmess();
		       strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
		       strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
		       if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
		       effmess();
		       if(c=='o' || c=='O'){
			  if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
			 }else ok=1;
			}
		       else {fclose(fp);remove(tmp);};
		      };
		      if(!ok){makesrcfile();
			      restorefile();
			     }
		      if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
			else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
		      break;
		     };
	       case 1:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
		      affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
		      read(dirsrc,4,19,51);
		      effmess();
		      strcpy(tmp,"c:/");
		      if(dirsrc[0]){strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");}
			else strcat(tmp,"wct.lst");
		      if(access(tmp,00)){
			error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
			ok=1;
		      };
		      if(!ok){
		       affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
		       read(ordidest,4,19,19);
		       effmess();
		       affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
		       read(dirdest,4,19,21);
		       effmess();
		       affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
		       read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
		       effmess();
		       strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
		       strcat(tmp,dirdest);strcpy(tmp1,tmp);
		       strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
		       if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
		       effmess();
		       if(c=='o' || c=='O'){
			  if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
			 }else ok=1;
			}
		       else {fclose(fp);remove(tmp);};
		      };
		      if(!ok){makesrcfile();
			      restorefile();
			     }
		      if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
			else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
		       break;};
	       case 2:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
		      affmess(" Entrer Le Nom R?seau De La Machine Source (WCT.LST)",14,0);
		      read(ordisrc,4,19,19);
		      effmess();
		      affmess(" Entrer Le Nom R?seau Du Disque Source (WCT.LST)",14,0);
		      read(dirsrc,4,19,21);
		      effmess();
		      affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
		      read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
		      effmess();
		      strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
		      strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");
		      affmess("Patienter ...",14,0);
		      if(access(tmp,00)){
			error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
			ok=1;
		      };effmess();
		      if(!ok){
		       affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
		       read(dirdest,4,19,51);
		       effmess();
		       strcpy(tmp,"c:/");strcat(tmp,dirdest);strcpy(tmp1,tmp);
		       strcat(tmp,"/");strcat(tmp,"test.$$$");affmess("Patienter ...",14,0);
		       FILE *fp=fopen(tmp,"w");effmess();
		       if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
		       effmess();
		       if(c=='o' || c=='O'){
			  if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
			 }else ok=1;
			}
		       else {fclose(fp);remove(tmp);};
		      };
		      if(!ok){makesrcfile();
			      restorefile();
			     }
		      if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
			else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
		      break;};
	       case 3:{ordisrc[0]='\0';ordidest[0]='\0';char tmp[81],tmp1[101];int ok=0;
		      affmess(" Entrer Le Nom R?seau De La Machine Source (WCT.LST)",14,0);
		      read(ordisrc,4,19,19);
		      effmess();
		      affmess(" Entrer Le Nom R?seau Du Disque Source (WCT.LST)",14,0);
		      read(dirsrc,4,19,21);
		      effmess();
		      affmess(" Entrer Le Nom Du R?pertoire O? Se Trouve Le Fichier WCT.LST",14,0);
		      read(tmp,4,19,75);strcat(dirsrc,"/");strcat(dirsrc,tmp);
		      effmess();
		      strcpy(tmp,"//");strcat(tmp,ordisrc);strcat(tmp,"/");
		      strcat(tmp,dirsrc);strcat(tmp,"/wct.lst");
		      affmess("Patienter ...",14,0);
		      if(access(tmp,00)){
			error("Le Fichier Ou R?pertoire Sp?cifi? N'existe Pas",tmp);
			ok=1;
		      };effmess();
		      if(!ok){
		       affmess(" Entrer Le Nom R?seau De La Machine destination",14,0);
		       read(ordidest,4,19,19);
		       effmess();
		       affmess(" Entrer Le Nom R?seau Du Disque Destination",14,0);
		       read(dirdest,4,19,21);
		       effmess();
		       affmess(" Entrer Le Nom Du R?pertoire O? Reconstituer Le Fichier",14,0);
		       read(tmp,4,19,75);strcat(dirdest,"/");strcat(dirdest,tmp);
		       effmess();
		       strcpy(tmp,"//");strcat(tmp,ordidest);strcat(tmp,"/");
		       strcat(tmp,dirdest);strcpy(tmp1,tmp);
		       strcat(tmp,"/");strcat(tmp,"test.$$$");FILE *fp=fopen(tmp,"w");
		       if(!fp){affmess(" Ce r?pertoire N'existe Pas. Le Cr?er (o/n) ? ",14,0);int c=getch();
		       effmess();
		       if(c=='o' || c=='O'){
			  if(mkdir(tmp1)!=0){error("Impossible De Cr?er Le R?pertoire",tmp1);ok=1;}
			 }else ok=1;
			}
		       else {fclose(fp);remove(tmp);};
		      };
		      if(!ok){makesrcfile();
			      restorefile();
			     }
		      if(ok) error("La Reg?n?ration des Fichiers Est Impossible !","");
			else {affmess(" Op?ration Effectu?e Avec Succ?s  Appuyer Sur Une Touche ...",14,1);getch();effmess();};
		       break;};
	      };
	     return;
    };
  };
 effln(yd);effln(yd+2);effln(yd+4);effln(yd+6);
 };

void menuoption(void){
 static char *Tabopt[]={"   Taille    "," Supprimer   "};
 int i=0,ch=12,xd=35,yd=3,y;
 char mess[161];
 noactbgcolor();
 gotoxy(xd,yd);cprintf("%s",Tabopt[0]);
 gotoxy(xd,yd+2);cprintf("%s",Tabopt[1]);
 i=0;y=yd;
 while(ch!=27){
   actbgcolor();gotoxy(xd,y);cprintf("%s",Tabopt[i]);gotoxy(1,1);
   ch=getch();
   noactbgcolor();gotoxy(xd,y);cprintf("%s",Tabopt[i]);
   switch(ch){
     case 72:if(i==0){i=1;y=yd+2;} else {i--;y-=2;};break;
     case 80:if(i==1){i=0;y=yd;} else {i++;y+=2;};break;
     case 13:effln(yd);effln(yd+2);//effln(yd+4);effln(yd+6);
	     switch(i){
	       case 0:{char s[11];int tel;
		       affmess(" Entrer La Taille Des Fichiers D?coup?s (En Ko)",14,0);
		       read(s,4,19,5);
		       effmess();tel=atoi(s);
			   if(tel>0) Taille=tel;
		       afftaille();
		       break;
		      };
	       case 1:{ if(filesupp){
			  filesupp=0;
			  Tabopt[1][strlen(Tabopt[1])-2]=' ';
			 }
			else {
			  filesupp=1;
			  Tabopt[1][strlen(Tabopt[1])-2]='';
			 };
		       break;
		      };
	      };
	     return;
    };
  };
 effln(yd);effln(yd+2);//effln(yd+4);effln(yd+6);
 };

void affaide(void){
 int y=3;
 textbackground(0);textcolor(14);
 gotoxy(1,y++);cprintf("- Wincut est un programme qui d?coupe de gros fichiers en de petits fichiers.");
 gotoxy(1,y++);cprintf("- Son but principal est de permettre de transporter de gros fichiers de machine   en machine.");y++;
 gotoxy(1,y++);cprintf("- Le menu G?n?rer permet de d?couper de gros fichiers. Il pr?sente les options");
 gotoxy(1,y++);cprintf("  Machine Locale qui permet de g?n?rer les petits fichiers ? partir de la machi");
 gotoxy(1,y++);cprintf("  ne locale, Locale->R?seau envoie les petits fichiers dans une machine distant");
 gotoxy(1,y++);cprintf("  e, R?seau->Locale prend un gros fichier en r?seau et le d?coupe dans la machi");
 gotoxy(1,y++);cprintf("  ne locale, R?seau->R?seau qui prend un fichier en r?seau et envoie le r?sulta");
 gotoxy(1,y++);cprintf("  t dans une autre machine distante.");
 gotoxy(1,y++);cprintf("- Le menu Restaurer permet de reconstituer le gros fichier ? partir des petits.");
 gotoxy(1,y++);cprintf("  Les options de ce menu ont la m?me signification que les options du menu pr?c");
 gotoxy(1,y++);cprintf("  ?dent ? la seule diff?rence qu'ils s'appliquent aux petits fichiers.");
 gotoxy(1,y++);cprintf("- Le menu Option permet de modifier la taille des petits fichiers ainsi que de ");
 gotoxy(1,y++);cprintf("  supprimer ou non les petits fichiers lors de la Restauration.");
 gotoxy(1,y++);cprintf("- Le menu Aide appelle cette Aide et Quitter de quitter le programme.");
 textcolor(15+128);
 gotoxy(1,y++);cprintf("- IMPORTANT! Les noms de fichiers doivent ?tre des noms Dos.");
 textcolor(14);
 gotoxy(1,y++);
 gotoxy(1,y++);cprintf("-                Wincut est un programme libre d'utilisation.");
 gotoxy(1,y++);
 gotoxy(1,y++);cprintf("-        Copyright Avril 2002 -- Olivier MBIELEU (oliviermbieleu@yahoo.fr)");
 gotoxy(1,1);
 getch();
 for(int x=3;x<=y;x++){
   gotoxy(1,x);
   clreol();
  };
 textcolor(15);
 };

void mainmenu(void){
  char *Tab[]={" G?n?rer "," Restaurer "," Options "," Aide "," Quitter "};
  int i=0,x,xd=7,yd=1,ch=2;
  noactbgcolor();gotoxy(1,1);clreol();
  gotoxy(xd,yd);cprintf("%s",Tab[0]);
  gotoxy(xd+15,yd);cprintf("%s",Tab[1]);
  gotoxy(xd+30,yd);cprintf("%s",Tab[2]);
  gotoxy(xd+45,yd);cprintf("%s",Tab[3]);
  gotoxy(xd+60,yd);cprintf("%s",Tab[4]);
  x=xd;i=0;afftaille();
  while(1){
	actbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);gotoxy(1,1);
	ch=getch();
	noactbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);
	switch(ch){
	  case 75:if(i==0){i=4;x=xd+60;} else {i--;x-=15;};
		  break;
	  case 77:if(i==4){i=0;x=xd;} else {i++;x+=15;};
		  break;
	  case 16:
		  actbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);gotoxy(1,1);
		  affmess("Voulez-Vous Vraiment Quitter Ce Programme ?(o/n) : ",14,0);int c=getch();
		  if(c!='o' && c!='O'){
		   effmess();noactbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);
		   break;};
		  textcolor(15);textbackground(0);clrscr();return;
	  case 13:case 80:
		actbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);gotoxy(1,1);
		switch(i){
		case 0:menugen();break;
		case 1:menurest();break;
		case 2:menuoption();break;
		case 3:affaide();break;
		case 4:affmess("Voulez-Vous Vraiment Quitter Ce Programme ?(o/n) : ",14,0);int c=getch();
			  if(c!='o' && c!='O'){
			   effmess();noactbgcolor();gotoxy(x,yd);cprintf("%s",Tab[i]);
			   break;};
			  textcolor(15);textbackground(0);clrscr();return;
		   };
		  break;
	 };
   };
 };

//Fin des Menus

char *makesrcfile(void){ // Cette fonction reconstitue le fichier source (Gros fichier)
  if(ordisrc[0]!='\0'){strcpy(Tempsrc,"//"); strcat(Tempsrc,ordisrc);}
   else strcpy(Tempsrc,"c:");
  if(dirsrc[0]!='\0'){strcat(Tempsrc,"/");strcat(Tempsrc,dirsrc);}
  strcpy(Tempdir,Tempsrc);
  strcat(Tempsrc,"/");strcat(Tempsrc,inputfile);
  return Tempsrc;
 };

char *makedestfile(char *dest){ // Cette fonction crée le nom du premier des petits fichiers (nbfile=1)
  nbfile=1;dest[0]='\0';
  if(ordidest[0]!='\0'){strcpy(Tempmdf,"//");strcat(Tempmdf,ordidest);}
   else strcpy(Tempmdf,"c:");
  if(dirdest[0]!='\0'){strcat(Tempmdf,"/");strcat(Tempmdf,dirdest);}
  char temp[13],input[201],ext[10];retext(inputfile,input,ext);
  ncopy(input,temp,4);strcat(temp,"0");addext(temp,"wct");
  strcpy(dest,Tempmdf); strcat(dest,"/");strcat(dest,temp);
  return dest;
 };

char *makendestfile(char *dest){ // Cette fonction crée les autres noms des petits fichiers (nbfile++)
  nbfile++; char temp[13],tmp[5],input[201],ext[10];retext(inputfile,input,ext);
  ncopy(input,temp,4);strcat(temp,itoa(nbfile-1,tmp,10));addext(temp,"wct");
  strcpy(dest,Tempmdf); strcat(dest,"\\");strcat(dest,temp);
  return dest;
 };

int makewctlst(void){ // Cette Fonction crée le fichier .lst. Ce fichier contient la liste des petits fichiers ainsi que le nom original du fichier.
  //D'autres informations pourront être ajoutées à ce fichier
  char repdest[101],tmp1[5],mess[111],tmp2[13],tp[6],input[31],ext[11];
  FILE *destfile;int i=0;
  strcpy(repdest,Tempmdf);strcat(repdest,"/");strcat(repdest,"wct.lst");
  destfile=fopen(repdest,"w");
  if(!destfile){error("Impossible De Cr?er WCT.LST","Op?ration Annul?e");perror("\n");return 0;}
  retext(inputfile,input,ext);ncopy(input,tmp1,4);
  strcpy(mess,"-- Attention !! Ce Fichier Ne Doit Jamais etre Modifie --");fprintf(destfile,"%s\n",mess);
  strcpy(mess,O_COPY);fprintf(destfile,"%s\n",mess);
  strcpy(mess,"Taille=");strcat(mess,itoa(Taille,tmp2,10));fprintf(destfile,"%s Ko\n",mess);
  strcpy(mess,"Fichier Source=");strcat(mess,inputfile);fprintf(destfile,"%s\n",mess);
  while(i<nbfile){
    strcpy(mess,"Fichier");strcat(mess,itoa(i,tp,10));strcat(mess,"=");
    strcpy(tmp2,tmp1);strcat(tmp2,itoa(i,tp,10));addext(tmp2,"wct");
    strcat(mess,tmp2);fprintf(destfile,"%s\n",mess);
    i++;
   };
  strcpy(mess,"Wincut est un programme Libre d'utilisation ...");
  fprintf(destfile,"\n%s\n",mess);
  strcpy(mess,"Contact : oliviermbieleu@yahoo.fr");
  fprintf(destfile,"\n%s\n",mess);
  fclose(destfile);
  return 1;
 };


int filecopy(int src,int dest,int n){ //Cette fonction copie n*BUFSIZE octets du fichier source vers le fichier destination
  unsigned i=0,nread=1,nwrite=1;
  char buf[BUFSIZE];
  while(i<n && nread>0){
   if (_dos_read(src, buf, BUFSIZE, &nread) != 0){error("Copie De Fichier","Erreur Lors De La Lecture Du Fichier");perror("\n");return 0;}
   if(_dos_write(dest, buf, nread, &nwrite) != 0){error("Copie De Fichier","Erreur Lors De L'?criture Dans Le Fichier");perror("\n");return 0;}
   i++;
   };
  return 1;
 };

int creatfiles(int srcfile){ // Cette fonction crée les petits fichiers. C'est elle qui est appelé par la fonction genetverif
  int destfile;
  char dfile[201],mes[]=" Cr?ation De ",mes1[251];
  FILE *fp;
  makedestfile(dfile);
  while(!(eof(srcfile))){
    strcpy(mes1,mes);strcat(mes1,dfile);
    affmess(mes1,15,1);
    fp=fopen(dfile,"w");fclose(fp);
    if(_dos_open(dfile, O_WRONLY, &destfile)!=0){error("Impossible De Cr?er Les Fichiers R?sultats","");perror("\n");return 0;};
    if(!filecopy(srcfile,destfile,Taille)) return 0;
    _dos_close(destfile);
    if(!(eof(srcfile))) makendestfile(dfile);
    effmess();
   };
  makewctlst(); // Création du fichier wct.lst
  return 1;
 };

char *decoupe(char *src,char car,char *s2){ // Cette fonction coupe une chaine de caractere en deux à partir du caractere car
  s2[0]='\0';if(!src[0]) return "";
  for(int i=0;i<strlen(src) && car!=src[i];i++);
  ncopy(src+i+1,s2,100);
  cutspace(s2);
  return s2;
 };

int restorefile(void){ // Cette fonction reconstitue le gros fichier à partir des petits
  char tmplst[201],tmp1[201],temp1src[201],temp2dest[201],temp3[11],moi[201];
  FILE *fp;
  strcpy(tmplst,Tempdir);strcat(tmplst,"/wct.lst");
  fp=fopen(tmplst,"r");
  if(!fp){error("Impossible D'ouvrir Le Fichier 'WCT.LST'","Op?ration Abandonn?e");return 0;};
  fgets(tmp1,200,fp);
  fgets(tmp1,200,fp);tmp1[strlen(tmp1)-1]='\0';
  if(strcmp(tmp1,O_COPY)){error("Le Fichier WCT.LST Est Corrompu","Op?ration Abandonn?e");return 0;};
  fgets(tmp1,200,fp);
  fgets(tmp1,200,fp);tmp1[strlen(tmp1)-1]='\0';decoupe(tmp1,'=',inputfile);

  if(ordidest[0]!='\0'){strcpy(temp2dest,"//");strcat(temp2dest,ordidest);}
   else strcpy(temp2dest,"c:");
  if(dirdest[0]!='\0'){strcat(temp2dest,"/");strcat(temp2dest,dirdest);}
  strcat(temp2dest,"/");strcat(temp2dest,inputfile); //Fichier Destination

  if(ordisrc[0]!='\0'){strcpy(temp1src,"//");strcat(temp1src,ordisrc);}
   else strcpy(temp1src,"c:"); //Fichiers Sources
  if(dirsrc[0]!='\0'){strcat(temp1src,"/");strcat(temp1src,dirsrc);}

  FILE *fp1=fopen(temp2dest,"w");fclose(fp1);
  int destfile, srcfile;
  char oli1[70]="Reg?n?ration de ",oli2[70];
  strcat(oli1,inputfile);strcat(oli1," A Partir De ");strcpy(oli2,oli1);
  if(_dos_open(temp2dest, O_WRONLY, &destfile)!=0){error("Impossible de Cr?er",temp2dest);perror("\nOlivier");return 0;};
  do{
   fgets(tmp1,200,fp);tmp1[strlen(tmp1)-1]='\0';decoupe(tmp1,'=',temp3);
   if(strlen(temp3)>3){
     strcpy(moi,temp1src);strcat(temp1src,"/");strcat(temp1src,temp3);
     if(_dos_open(temp1src,O_RDONLY,&srcfile)!=0){error("Impossible D'ouvrir Le Fichier Source","");perror("\nOlivier");return 0;};
     strcat(oli1,temp3);
     affmess(oli1,15,1);strcpy(oli1,oli2);
     if(!filecopy(srcfile,destfile,32000)) return 0;
     _dos_close(srcfile);if(filesupp)remove(temp1src);
     strcpy(temp1src,moi);
     effmess();
    };
  }while(strlen(temp3)>3);
 _dos_close(destfile);fclose(fp);if(filesupp)remove(tmplst);
 return 1;
 };

void main(void){
  textmode(C80);
  clrscr();
  mainmenu();
  clrscr();
 };


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • WINCUT.CPPTélécharger ce fichier [Réservé aux membres club]Voir ce fichier28 638 octets
  • WINCUT.EXETélécharger ce fichier [Réservé aux membres club]43 834 octets

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture C++ CONSOLE APPLI : GESTION CABINET MÉDICAL par chakerTN
Source avec Zip Source avec une capture SEGIM PARTIE 2 par lydiamessemma
Source avec Zip ANALYSEUR SANTAXIQUE SLR ET GENERATEUR DU CODE QUAD INDEPEND... par darkzan
Source avec Zip PENDU SANS PRÉTENTION par dhuyp
Source avec une capture ALGORITHME DE MAURICE KRAITCHIK (1882&#65533;1957) par thebroyeur

Commentaires et avis

Commentaire de Kaid le 04/11/2002 16:18:54

Justement, où est le code ?

Commentaire de BigOliver le 04/11/2002 16:27:27

Il arrive, ne te presse pas kaid. Essaie le et dis moi ce que tu en penses.

Commentaire de Kaid le 04/11/2002 17:59:11

En général les sources m'intéressent plus que les programmes.

Commentaire de bouba le 05/11/2002 13:16:43

Tu n'as pas mis le code, excuse moi, mais je trouve ceci un pe nul! Ou est l'interêt?

Commentaire de Duc le 05/11/2002 17:06:02

Aucune utilité sans le code...

Commentaire de zzzzzz le 02/08/2003 14:33:56

nivo 1? faut pas abuser non plus

Commentaire de BigOliver le 02/08/2003 17:01:12

Sinon, comment as-tu trouvé le prog? Bah , niveau 1, c'est facile à comprendre zzzzzz

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales