[C] ca me dépasse pb avec fopen()
Résolu
balou311
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Salut à tous
alors la je comprend vraiment pas le problème
merci de me dire pourquoi ça fonctionne pas!
int fichier_mfgpro(struct w_zone * p_w_zone, char * p_a_ecrire)
{
FILE *l_fic_mfg;
struct w_zone * l_w_zone;
char * l_chiffre = "0123456789";
char * l_nom_fichier;
char * l_num_id;
char l_2lettre_site[3];
char l_num_op[3];
int l_ret;
l_w_zone = p_w_zone;
l_w_zone->p_op = (p_w_zone->p_op + (p_w_zone->p_service.etape_courante - 1));
strncpy(l_num_id,(l_w_zone->p_of.num_of + 16),(strlen(l_w_zone->p_of.num_of + 16)));
strncpy((l_2lettre_site + 0),(l_w_zone->p_of.nom_of + 10),sizeof(char));
strncpy((l_2lettre_site + 1),(l_w_zone->p_of.nom_of + 11),sizeof(char));
l_2lettre_site[2] = 0X00;
printf(l_w_zone->p_op->nom);
strncpy((l_num_op + 0),strpbrk(l_w_zone->p_op->nom,l_chiffre),2*sizeof(char));
l_num_op[2] = 0X00;
sprintf(l_nom_fichier,"%s.%s.%s.xml%c",l_2lettre_site,l_num_id,l_num_op,0X00);
printf("l_nom_fichier:%s\n",l_nom_fichier);
Jusque la tout fonctionne bien donc mon l_nom_fichier est OK
Après ca plante total
if ((l_fic_mfg = fopen(l_nom_fichier,"w+")) == NULL)
{
printf("Erreur lors de la création du fichier");
return 0;
}
l_ret = fprintf(l_fic_mfg,"<?xml version=\"1.0\" ?>\n%s\n</nom_op>\n",p_a_ecrire);
if (l_ret < 0)
{
printf("Erreur lors de l'enregistrement des info dans le fichier");
return 0;
}
else
printf("fichier généré!");
fclose(l_fic_mfg);
return 1;
}
merci de m'aider j'en ai marre
alors la je comprend vraiment pas le problème
merci de me dire pourquoi ça fonctionne pas!
int fichier_mfgpro(struct w_zone * p_w_zone, char * p_a_ecrire)
{
FILE *l_fic_mfg;
struct w_zone * l_w_zone;
char * l_chiffre = "0123456789";
char * l_nom_fichier;
char * l_num_id;
char l_2lettre_site[3];
char l_num_op[3];
int l_ret;
l_w_zone = p_w_zone;
l_w_zone->p_op = (p_w_zone->p_op + (p_w_zone->p_service.etape_courante - 1));
strncpy(l_num_id,(l_w_zone->p_of.num_of + 16),(strlen(l_w_zone->p_of.num_of + 16)));
strncpy((l_2lettre_site + 0),(l_w_zone->p_of.nom_of + 10),sizeof(char));
strncpy((l_2lettre_site + 1),(l_w_zone->p_of.nom_of + 11),sizeof(char));
l_2lettre_site[2] = 0X00;
printf(l_w_zone->p_op->nom);
strncpy((l_num_op + 0),strpbrk(l_w_zone->p_op->nom,l_chiffre),2*sizeof(char));
l_num_op[2] = 0X00;
sprintf(l_nom_fichier,"%s.%s.%s.xml%c",l_2lettre_site,l_num_id,l_num_op,0X00);
printf("l_nom_fichier:%s\n",l_nom_fichier);
Jusque la tout fonctionne bien donc mon l_nom_fichier est OK
Après ca plante total
if ((l_fic_mfg = fopen(l_nom_fichier,"w+")) == NULL)
{
printf("Erreur lors de la création du fichier");
return 0;
}
l_ret = fprintf(l_fic_mfg,"<?xml version=\"1.0\" ?>\n%s\n</nom_op>\n",p_a_ecrire);
if (l_ret < 0)
{
printf("Erreur lors de l'enregistrement des info dans le fichier");
return 0;
}
else
printf("fichier généré!");
fclose(l_fic_mfg);
return 1;
}
merci de m'aider j'en ai marre
A voir également:
- [C] ca me dépasse pb avec fopen()
- Heure de retour de connexion dépassé dahua - Forum Réseaux sociaux
- Désolé vous avez dépassé votre quota d'éléments partagés - Forum Réseaux sociaux
- Désolé, vous avez dépassé votre quota d'éléments partagés. - Forum Webmastering
- Délai de connexion dépassé ark - Forum Virus
- Le fichier dépasse la taille maximale de 1mb ✓ - Forum PDF
2 réponses
Salut,
Kilian je vois qu'on revient à malloc() et l'opérateur ->.
balou311
Avec tes pointeurs il vaut mieux alloué un peut de mémoire.
struct w_zone * l_w_zone;
mais il faut voir dans ton code (tu as écrit une partie).
Kilian je vois qu'on revient à malloc() et l'opérateur ->.
balou311
Avec tes pointeurs il vaut mieux alloué un peut de mémoire.
struct w_zone * l_w_zone;
l_w_zone = malloc(sizeof(struct w_zone))
mais il faut voir dans ton code (tu as écrit une partie).
Kilian je vois qu'on revient à malloc() et l'opérateur ->.
Il ne m'ont plus quittés depuis ce jour ^^
Pour le pointeur ya pas besoin, c'est un pointeur vers une structure passée en argument.
Regarde peut être vers la ligne là:
Commente là pour voir si c'est ça qui pose problème. Ya peut être un soucis avec p_a_ecrire.
Il ne m'ont plus quittés depuis ce jour ^^
Pour le pointeur ya pas besoin, c'est un pointeur vers une structure passée en argument.
Regarde peut être vers la ligne là:
l_ret = fprintf(l_fic_mfg,"<?xml version=\"1.0\" ?>\n%s\n</nom_op>\n",p_a_ecrire);
Commente là pour voir si c'est ça qui pose problème. Ya peut être un soucis avec p_a_ecrire.
Merci à tous les deux pour votre aide
maintenant ça fonctionne sans vraiment que je comprenne pourquoi mais bon.
pour le malloc c'est pas utile c'est un des pointeurs (je les utilise justement pour pas me faire chier avec les malloc(......) et les free(.....) lol )
quant à p_a_ecrire ça m'étonnerai fortement bref.
merci quand même tcho
maintenant ça fonctionne sans vraiment que je comprenne pourquoi mais bon.
pour le malloc c'est pas utile c'est un des pointeurs (je les utilise justement pour pas me faire chier avec les malloc(......) et les free(.....) lol )
quant à p_a_ecrire ça m'étonnerai fortement bref.
merci quand même tcho
Salut,
Merci à tous les deux pour votre aide
De rien, mais je vois qu'on n'a pas trop t'aider.
maintenant ça fonctionne sans vraiment que je comprenne pourquoi mais bon.
Il doit fonctionner puisque tu as du faire des modifications, et si tu ne comprends pas pourquoi il fonctionne, apart le résultat tu n'as pas gagner grand chose, mais c'est à toi de voir.
pour le malloc c'est pas utile c'est un des pointeurs (je les utilise justement pour pas me faire chier avec les malloc(......) et les free(.....) lol )
Ben, justement, le principal inérêt d'un pointeur est la gestion de l'allocation dynamique de la mémoire, et pour ça tu as malloc(), free(),calloc(),realloc().
Dans le cas des pointeurs la mémoire n'est plus allouée de manière statique lors de la declarations des variables, mais dynamiquement au mesure des besoins.
Si tu ne veux pas alloué dynamiquement de la mémoire je ne vois pas l'intêret de declarer autant des pointeurs.
Le message d'erreur :
"segmentation fault" ( Erreur de segmentation)
il veut bien dire que le programme essaie d'accéder à une zone mémoire inaccessible ou non autorisée.
A+
lami20j
Merci à tous les deux pour votre aide
De rien, mais je vois qu'on n'a pas trop t'aider.
maintenant ça fonctionne sans vraiment que je comprenne pourquoi mais bon.
Il doit fonctionner puisque tu as du faire des modifications, et si tu ne comprends pas pourquoi il fonctionne, apart le résultat tu n'as pas gagner grand chose, mais c'est à toi de voir.
pour le malloc c'est pas utile c'est un des pointeurs (je les utilise justement pour pas me faire chier avec les malloc(......) et les free(.....) lol )
Ben, justement, le principal inérêt d'un pointeur est la gestion de l'allocation dynamique de la mémoire, et pour ça tu as malloc(), free(),calloc(),realloc().
Dans le cas des pointeurs la mémoire n'est plus allouée de manière statique lors de la declarations des variables, mais dynamiquement au mesure des besoins.
Si tu ne veux pas alloué dynamiquement de la mémoire je ne vois pas l'intêret de declarer autant des pointeurs.
Le message d'erreur :
"segmentation fault" ( Erreur de segmentation)
il veut bien dire que le programme essaie d'accéder à une zone mémoire inaccessible ou non autorisée.
A+
lami20j
donc à mon avis il veut lire ou ecrire quelque part en mémoire mais il peut pas!
merci de ton aide