Voila en ce moment la je travaille sur un projet qui consiste a :

Vérifiez la mémoire vive du système, à partir de là déterminer la taille maximale des fichiers qu'il peut gérer. (suggérer 10-20% de la fréquence max de RAM) Si le fichier est plus grand que la taille de fichier maximale, fractionnés automatiquement en fichiers temporaires et les utiliser.

donc voici la demarche:

Ouvrir le fichier
Vérifier la quantité de lignes définissent comme [lignes]
Crée un tableau [lignes]
Chargez toutes les urls dans un tableau
fermer le fichier

split.c :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
/ *
split.c accueillera les fonctions pour découper les fichiers d'entrée qui sont trop grands.
Cela devrait garder l'utilisation de la mémoire faible.
Taille du fichier(FileSize) max est déterminé par l'entrée d'utilisateur (-m 4096) ou par le programme lui-même s'il n'est pas spécifié
* /
 
#include <split.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>
 
int fileSize ( char File[] ); //int pour stocker la taille du fichier
void fileNameExt ( char Name[], char Ext[], char File[] );
 
int splitmain( int argc, char *argv[] ) //méthode principale
{
FILE *source, *destination; //définir source et la destination des pointeurs de fichiers 
int size, parts; //int pour la taille du fichier de sortie et la quantité de fichiers de sortie
char name[100], ext[100], aux[100];
 
if( argc < 3 ) //vérifier combien de args ont été entrés
{
printf( "Il n'y a pas suffisamment de args!" ); 
system( "pause" ); 
return 0;
}
 
fileNameExt( name, ext, argv[1] );
parts = atoi( argv[2] );
 
size = fileSize( argv[1] ); //taille variable = filesize de arg1, le fichier d'entrée.
if( (source = fopen(argv[1], "rb")) == NULL ) //si fopen renvoie NULL le fichier n'est pas présent, les fichiers vides commence par \ n?
{
printf( "Erreur! Fichier source n'a pas pu être ouvert!" );
system( "pause" );
return 0;
}
 
 
for( int i = 0; i < parts; i++ ) //jusqu'à int i est le même que les parties int, boucle.
 
sprintf( aux, "%s%s-%d", name, ext, i );
printf( "Generating %s file! -- ", aux );
 
if( (destination = fopen(aux, "wb")) == NULL ) //si le fichier de destination fopen renvoie NULL alors il n'ya pas de sortie
{
printf( "Errer! fichier de destination %s n'a pas pu etre cree!", aux ); 
system( "pause" );
return 0;
}
 
char car = getc( source );
for( int j = 0; j < size/parts && !feof(source); j++ )
{
putc( car, destination );
car = getc( source );
}
 
printf( "OK!
" );
fclose( destination );
}
 
fclose( source );
system( "pause" );
return 0;
}
 
int fileSize( char File[] ) //calculer la taille du fichier
{
FILE *f; //initier pointeur du fichier
 
if( (f = fopen(File,"rb")) == NULL ) //si fopen renvoie NULL le fichier n'est pas présent, les fichiers vides commence par \n?
{
printf( "Erreur! Fichier source n'a pas pu être ouvert!" ); 
system( "pause" );
return 0;
}
 
fseek( f, 0,SEEK_END ); 
int sz = ftell(f);
fclose( f );
 
return sz;
}
 
void fileNameExt( char Name[], char Ext[], char File[] )
{
char *aux;
if( (aux = strrchr(File, '')) == NULL )
{
if( (aux = strrchr( File, '/' )) == NULL)
{
aux = File;
}
}
 
if( aux != File )
{
aux++;
}
 
for( int i = 0; *aux != '.'; i++, aux++ )
{
Name[i] = *aux;
Name[i+1] = '\0;';
}
 
for( int i = 0; *aux != '\0;'; i++, aux++ )
{
Ext[i] = *aux;
Ext[i+1] = '\0';
}
}
split.h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef SPLIT_H_INCLUDED
#define SPLIT_H_INCLUDED
 
/* Prototypes des fonctions */
/* split main() */
int splitmain( int argc, char *argv[] );
 
/* calculer la taille de fichier */
int fileSize( char File[] );
 
/* */
void fileNameExt( char Name[], char Ext[], char File[] );
 
#endif
defhaze.c :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <conio.h>
#include <dos.h>  
#include <process.h>   
#include <stdio.h> 
#include <split.h> 
 
    int main(int argc, char *argv[])
    {  
        printf(" /*****Bienvenu a De(f)haze*****\ \n");
        printf(" |			        | \n");
        printf(" |       Fait par Luloo         | \n");
        printf(" |                              | \n");
        printf(" |                              | \n");
        printf(" \*****--------------------*****/ \n");
        int suc6 = 0;
        loadfile();
 
        return 0; 
     } 
 
      int loadfile() //Méthode pour charger le fichier d'entrée dans un tableau
      {
        inputfile = ; //attribuer une valeur à fichier d'entrée
	FILE *fpinput; //définir pointeur du fichier d'entrée
        fpinput=fopen(“&inputfile”, ”r”); //ouvrir le fichier d'entrée avec mode "r", lecture seule(read only)
        //fp = fopen("filename.txt", "r");
	printf("Le comptage et la collecte des urls ... \n"); 
 
	while((fgets(fp)) != NULL) //tandis que la rangée / ligne ne renvoie pas NULL (espace ou \n !=NULL), urls++
         {
           urls++;
         }  
        return 0;
  }
 
        for(int i=0; i<urls; i++) //tandis que i est inférieur au montant des urls, tourne en boucle
        fscanf(fp, "%d %s\n", &UrlArr[i]); //ajouter une ligne au tableau
	fclose(fpinput); //fermez le fichier puisque les urls sont déjà dans le tableau
      }
 
/*
Méthode Append ajoutera les injections réussies dans le fichier de sortie si dans le cas d'un crash ou quoi que vous aurez toujours vos injections réussies
*/
 
int apppend()
{
 
FILE *fpoutput; //définir pointeur du fichier de sortie
fpoutput = fopen("output.txt", "a"); //Inclure dans le fichier de sortie
 
if (suc6 <1)
{
struct date d;
getdate(&d); 
fwrite("fpoutput", "De(f)haze started [%d/%d/%d",d.da_day,d.da_mon,d.da_year]\n");
fwrite("fpoutput", "Codee par Luloo \n");
}
 
}
voila mon probleme cest que je trouve que mon code est un peu mal structure et incomplet

donc en gros, jaimerai avoir quelques idees concernant l'optimisation de mon code et si possible corriger quelques fautes