C problème ouverture fichier
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

C problème ouverture fichier



  1. #1
    Mind54

    C problème ouverture fichier


    ------

    J'ai un problème ici lorsque j'effectue ma boucle "while (*ChariotClient[i] != '\0') " mon fichier ne veut pas s'ouvrir, alors que lorsque je test ma fonction InfosArticle je n'ai aucun problème.



    Code:
    # include <stdio.h>
    # include <string.h>
    
    
    void LectureCodeBarres(unsigned char[], char[], char[]);
    
    struct Article {
    	char CodeFabricant[6];
    	char CodeArticle[6];
    	char Nom[30];
    	int Rayon;
    	double prix;
    	int stock;
    };
    
    struct Article InfosArticle(char[], char[], int*);
    double lecture_sequentielle(unsigned char[][12]);
    
    
    
    int main() {
    	struct Article A;
    	int position;
    	unsigned char CodeBarres[12] = { 13, 49, 17, 5, 29, 13, 102, 66, 80, 78, 68, 66 };
    	char code_fab[6];
    	char code_art[6];
    	double prix = 0;
    	
    	
    	// LectureCodeBarres(CodeBarres, code_fab, code_art);
    	// puts(code_fab);
    	// puts(code_art);
    
    
    	// A=InfosArticle(code_fab, code_art, &position);
    	// puts(A.Nom);
    	// printf("%d", position);
    
    
    	unsigned char ChariotClient[][12] = {
    {13, 11, 13, 51, 57, 39, 102, 68, 72, 114, 114, 114},
    {19, 11, 55, 57, 39, 39, 114, 68, 116, 78, 66, 66},
    {13, 61, 33, 29, 23, 13, 108, 102, 40, 116, 102, 68},
    {33, 51, 23, 9, 29, 33, 114, 78, 114, 122, 100, 76},
    {13, 19, 5, 23, 9, 13, 92, 78, 66, 66, 116, 72},
    {13, 57, 59, 47, 29, 39, 102, 66, 80, 78, 68, 66},
    0
    	};
    
    	prix=lecture_sequentielle(ChariotClient);
    	printf("%lf", prix);
    
    
    	return 0;
    }
    
    
    
     double lecture_sequentielle(unsigned char ChariotClient[][12]) {
    	int position;
    	struct Article A;
    	char code_fab[6];
    	char code_art[6];
    	double somme = 0;
    	int i = 0;
    	while (*ChariotClient[i] != '\0') {
    		LectureCodeBarres(ChariotClient[i], code_fab, code_art);
    		A = InfosArticle(code_fab, code_art, &position);
    		puts(A.Nom);
    		somme = somme + A.prix;
    		i++;
    	}
    	return somme;
    }	
    
    struct Article InfosArticle(char code_fabricant[], char article[], int*position) {
    	struct Article inconnu = { "", "", "inconnu", 0, 0.0, 0 }, A;
    
    	
    	FILE* pf=NULL;
    	errno_t code_erreur;
    	code_erreur = fopen_s(&pf, "C:/Users/anton/Downloads/Articles2020.bin", "r+b");
    	if (code_erreur != 0) {
    		printf("erreur lors de l'ouverture");
    		return inconnu;
    	}
    
    	*position = 0;
    
    	while ((fread(&A, sizeof(struct Article), 1, pf)) != 0) {
    		// puts(A.CodeArticle);
    		*position = *position + 1;
    		if ( strcmp(A.CodeFabricant, code_fabricant) == 0 && strcmp(A.CodeArticle, article) == 0)
    			return A;
    	}
    	*position = -1;
    	return inconnu;
    	fclose(pf);
    		
    		
    	}
    	
    
    void LectureCodeBarres(unsigned char code_barre[], char code_fabricant[], char article[]) {
    	char Jeux[117] = {
    0 ,  0 ,  0  ,  0  ,  0  , '6' ,  0  ,  0  ,  0  , '8' , 0 , '9',  0  , '0' ,  0  ,  0  ,  0  , '7' ,  0  , '2' , 0 ,  0 ,  0  , '9' ,  0  , '1' ,  0  , '2' ,  0  , '4' ,
    0 ,  0 ,  0  , '3' ,  0  , '4' ,  0  ,  0  ,  0  , '0' , 0 ,  0 ,  0  ,  0  ,  0  ,  0  ,  0  , '6' ,  0  , '5' , 0 , '1',  0  ,  0  ,  0  , '8' ,  0  , '5' ,  0  , '7' ,
    0 , '3',  0  ,  0  ,  0  ,  0  , '3' ,  0  , '7' ,  0  , 0 ,  0 , '8' ,  0  ,  0  ,  0  ,  0  ,  0  , '5' ,  0  , '6',  0 ,  0  ,  0  ,  0  ,  0  ,  0  ,  0  ,  0  ,  0  ,
    0 ,  0 , '4' ,  0  ,  0  ,  0  ,  0  ,  0  ,  0  ,  0  ,  0 ,  0 , '1' ,  0  ,  0  ,  0  ,  0  ,  0  , '2' ,  0  , 0 ,  0 ,  0  ,  0  , '0' ,  0  , '9' };
    
    	int i, j;
    	for (i = 0; i < 5; i++) 
    		code_fabricant[i] = Jeux[code_barre[i + 1]];
    
    
    	for (j = 6; j < 11; j++)
    		article[j - 6] = Jeux[code_barre[j]];
    
    	code_fabricant[5] = '\0';
    	article[5] = '\0';
    
    	//int f;
    	//for (f = 0; f < 5; f++)
    	//	printf("%c",article[f]);
    
    }

    -----

  2. #2
    piep62110

    Re : C problème ouverture fichier

    Bonjour à première vue, une cause possible est que dans ta boucle while ((fread... tu sors par un return ce qui contourne la fermeture de ton fichier.
    à l'appel suivant de InfosArticle, le fichier est déjà ouvert.

  3. #3
    umfred

    Re : C problème ouverture fichier

    est-ce que tes 0 dans Jeux ne serait pas des '0' ?

  4. #4
    Ikhar84
    Animateur Informatique

    Re : C problème ouverture fichier

    Bien vu !

    Mais ça devrait pas poser de problèmes autres que des valeurs incohérentes...

    À chaque "entier" on aura dans le tableau le caractère associé (ASCII)...

    D'ailleurs ses autres tableaux (de tableaux) de char (ChariotClient) utilisent des entiers...

    En passant, par convention, la première lettre du nom d'une variable est en minuscule en C.
    J'ai glissé Chef !

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : C problème ouverture fichier

    Citation Envoyé par umfred Voir le message
    est-ce que tes 0 dans Jeux ne serait pas des '0' ?
    A priori non, puisque les tests se font par rapport à '\0'

  7. #6
    umfred

    Re : C problème ouverture fichier

    il y a une inversion des lignes à la fin de InfosArticle
    Code:
    	return inconnu;
    	fclose(pf);
    tu sors de la fonction avec le return avant de fermer le fichier (qui du coup reste ouvert car la ligne n'est jamais exécutée)
    Code:
    	fclose(pf);
    	return inconnu;
    ça devrait mieux marcher.

Discussions similaires

  1. Problème suite a l'ouverture d'un fichier
    Par invite7c62d2c7 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 11/07/2009, 23h38
  2. probleme d'ouverture d'in fichier ISO et d'un fichier RAR
    Par invitec35bc9ea dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 28/08/2006, 19h54
  3. Problème d'ouverture fichier
    Par invite769675d7 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 10/01/2005, 20h12
  4. Problème à l'ouverture d'un fichier
    Par invited1dc3a82 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 19/08/2004, 21h58
  5. problème d'ouverture de fichier
    Par invited693d554 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 13/04/2004, 20h40