Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Débuter
Débuter Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/12/2012, 23h12   #1
luloo
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Albanie

Informations forums :
Inscription : décembre 2012
Messages : 1
Points : 0
Points : 0
Par défaut Optimisation du code

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 :
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 :
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 :
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
luloo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 09h40   #2
Neckara
Rédacteur/Modérateur

 
Avatar de Neckara
 
Homme Denis
Étudiant
Inscription : décembre 2011
Messages : 2 838
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Loire (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 2 838
Points : 8 628
Points : 8 628
Envoyer un message via MSN à Neckara Envoyer un message via Skype™ à Neckara
Bonjour,

Je pense que la première chose à faire serait d'indenter ton code
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon.

Chaîne Youtube : Vidéos

Ma page DVP : http://neckara.developpez.com/
Neckara est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 06/01/2013, 00h05   #3
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 791
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 791
Points : 43 072
Points : 43 072
Bonjour

Et puis à la fin, ce truc me fait douter :
Code :
1
2
3
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");
}
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/01/2013, 12h05   #4
Ngork
Membre chevronné
 
Homme
Auditeur informatique
Inscription : avril 2009
Messages : 119
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Auditeur informatique
Secteur : Finance

Informations forums :
Inscription : avril 2009
Messages : 119
Points : 681
Points : 681
Citation:
Envoyé par LittleWhite Voir le message
Bonjour

Et puis à la fin, ce truc me fait douter :
Code :
1
2
3
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");
}
Oui, là ce n'est même plus un doute, c'est une certitude : cela ne peut marcher que si l'on vire les guillemets autour de fpoutput et que l'on remplace le fwrite par un fprintf (et puis une petite modification de la ... chaîne !

Code :
1
2
fprintf(fpoutput, "De(f)haze started [%d/%d/%d]\n",d.da_day,d.da_mon,d.da_year);
fprintf(fpoutput, "Codee par Luloo \n");

Et puis - Oula ! - il faut penser à doubler les anti-slashes :

Code :
1
2
3
4
5
6
        printf(" /*****Bienvenu a De(f)haze*****\\ \n");
        printf(" |			        | \n");
        printf(" |       Fait par Luloo         | \n");
        printf(" |                              | \n");
        printf(" |                              | \n");
        printf(" \\*****--------------------*****/ \n");
Ngork est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h39.


 
 
 
 
Partenaires

Hébergement Web