Bonjour

Je fais un programme pour remplir les fichiers (texte) d'un dossier et leur fixer un taille.

Je pense que celui-ci ne peut marcher qu'avec des fichiers textes et surtout ne doit se modifier lui-même. Donc j'ai fait un test pour le passer.

avec gdb le segmentation fault apparait pour un fwrite des includes standard, donc je pense que c'est un probleme du fichier dans lequelle j'essaye d'écrire.

(Le problème ne doit pas venir du main)

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
 
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
 
void liste(char *,char *);
int taille(char *,int);
 
int main(int argc,char *argv[]){ /*en argument on donne la taille mais je ne l'utilise pas pour le moment*/
	char *nmprog;
	nmprog=malloc(sizeof(argv[0]));
	nmprog=argv[0];
	int i=2;
	while (nmprog[i] != '\0'){
		nmprog[i-2]=nmprog[i];
		i++;
	}
	nmprog[i-2]='\0';
 
	if (argc != 2)
		printf("donner la taille en octets\n");
	else
		liste(".",nmprog);
	return 0;
}
 
void liste(char *rep,char *nmprog){
	DIR *dossier;
	struct dirent *fichier;
	struct stat temp;
 
	if( NULL != ( dossier = opendir(rep))){
		readdir(dossier);readdir(dossier); /*pour passer le dossiers courant et parent*/
		while( NULL != ( fichier = readdir(dossier))) {
			if (-1 == stat(fichier->d_name, &temp))
				return;
			if ((temp.st_mode & S_IFMT) == S_IFDIR)//c'est un dossier donc pas à remplir
				continue;
			if ((fichier->d_name) != nmprog)
				taille(fichier->d_name, 10);
		}
		closedir(dossier);
	}
}
 
int taille(char *nom,int taille){/*arguments : nom du fichier texte puis taille en Ko*/
    FILE *fichiero;
 
    int i;
 
 
	fichiero = fopen(nom, "a");
 
	for (i=0;i<(taille*50);i++)
 
        fprintf (fichiero, "c'est du remplissage");
 
	return 0;
}
Le probème vient sans doute de taille qui écrit dans le fichier.

Merci pour toutes les aides que vous pourrez m'apporter.