Bonsoir tout le monde.....en crise avec fopen

Résolu/Fermé
casers Messages postés 49 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 3 juin 2008 - 3 déc. 2007 à 18:41
 le père - 3 déc. 2007 à 19:22
Donc rebonsoir a tous les paladins,
Voici une petite focntion que je vien de faire pour pouvoir e loger dans mon prog, j'ai une erreur sur le fopen qui renvoi tj un pointeur nul.
Le nom du fichier est juste, le fichier n'est pas ouvert etc....
que ce passet-il? mistere....
Si qqun peu metre un peu de lumiere...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include "Structures.cpp"
//#include "Constantes.cpp"
#include "protyp_fctions.h"

// BUT: controler le login des client.

// ENTREES: Aucune.

// SORTIES: Aucune.

// RETOUR: retourne une valeur traité comme logique. Soit une valeur positive pour
// un login reussit ou 0 si erreur d'identification.

// REMARQUES: cette fonction aurait pu etre utilisé a la suite de la construction de l'arbre
// binaire. Avec une recherche dans l'arbre binaire. Cependant en un premier temps
// nous utiliserons une lecture sequentiel du fichier pour cette fonction.

int login()
{
//Declaration des variables.
char login[LONG_MAX_NOM_CLIENT];
char MDP[LONG_MAX_MDP];
FILE *FichierClients;
int authorization = REFUSER;
int UtilisateurTrouv = REFUSER;
StructClient *Client;
char ligne[LG_MAX_LIGNE];
char *p;



while ( authorization == REFUSER)
{
// Saisie par l'utilisateur du login et de son mot de passe.
printf("***********%s***********\n","FACTORING");
printf("%s","Login:");
gets(login);
printf("%s","Mot de passe:");
gets(MDP);

UtilisateurTrouv = REFUSER;

if (!strcmp(login,ADM) && !strcmp(MDP,MDP_ADM))
{

puts("Bonjour administrateur");
return VALIDER;
}
else if ( strcmp(login,SORTIR) && strcmp(MDP,SORTIR))
{
// Recherche du client dans le fichier.

// Ouverture du fichier.
FichierClients = fopen("FOURNISSEURS.CSV","r+");
printf("%s\n",FichierClients);



// Lecture du fichier.
while(fgets(ligne,sizeof ligne,FichierClients), !feof(FichierClients))
{
char *debut;
gets(p);
// Insersion de la ligne lue dans la structure.
debut = strtok (ligne,";");
Client->CodeClient = (char*) malloc(strlen(debut)+1);
strcpy(Client->CodeClient , debut);
debut = strtok (NULL,";");
Client->NomClient = (char*) malloc(strlen(debut)+1);
strcpy(Client->NomClient , debut);
debut = strtok (NULL,";");
Client->MDP = (char*) malloc(strlen(debut)+1);
strcpy(Client->MDP , debut);
debut = strtok (NULL,";");
Client->SoldeCompteClient = (char*) malloc(strlen(debut)+1);
strcpy(Client->SoldeCompteClient , debut);

// Controle (si le Client est trouvé) du mot de passe.

if ( !strcmp(login,Client->NomClient))
{
UtilisateurTrouv = VALIDER;
if ( strcmp(MDP,Client->MDP))
{
authorization = VALIDER;
printf("%s %s\n","Merci",Client->NomClient);
puts("Benvenu(e) dans FACTORING.");
return VALIDER;
}
else
{
authorization = REFUSER;
puts("Identification non reussie.");
return REFUSER;
}
}
}

if (UtilisateurTrouv = REFUSER)
puts("Utilisateur inexistant.");
fclose(FichierClients);


}
else if (!strcmp(login,SORTIR) || !strcmp(MDP,SORTIR))
puts("On sort!!");
}

}

Et aussi je cherchais a savoir si il existe une fonction qui permet de sortir du programme d'ou qu'on ce trouve, direct..
J'ai trouver exit mais sa ne marche pas super..

merci

2 réponses

casers Messages postés 49 Date d'inscription dimanche 18 novembre 2007 Statut Membre Dernière intervention 3 juin 2008
3 déc. 2007 à 19:18
enfaite c bon ct pque j'avais mis les fichier dans dev c++ avec une extention .c... sa dev il aime pas..
0
Bonsoir

Tiens, il y avait longtemps...

FichierClients = fopen("FOURNISSEURS.CSV","r+");
printf("%s\n",FichierClients);

est une aberration . Tu ne peux espérer imprimer quelque chose que si FichierClients pointe sur un tableau de caractères ; or c'est un FILE *.

A part ça, le nom du fichier est correct ? Es-tu sûr que le fichier est dans le répertoire par défaut, puisque tu ne mets pas de répertoire ?
0