| | tonguim | Posté le 07/04/2006 @ 15:49 | Petit astucien
116 Messages
| Bonjour,
je suis en train de realiser un programme de "gestion des Comptes Bancaires" en langage C;
Dans le programme, j'ai une structure compte declarée comme une variable globale:
[code]struct compte
{
char numeroCpte [11]; //numero du compte
char typeCompte [7]; //type du compte: cheque ou epargne
char nomClient [50]; //nom du client
char prenomClient [50]; //prenom(s) du client
char statutClient [12]; //statut social du client: salarie ou non salarie
char categorieCompte [13]; //categorie du compte: particulier ou professionnel
char numeroClient [11]; //numero du client
char dateCreation [10]; //date de creation du compte
};
struct compte cpt; // declaration d'une variable cpt de type compte
[/code]
J'enregistre les donnees dans la structure compte dans un fichier.
[code]void EnregDansFichier ()
{
char nomFichier [26]; //nom du fichier dans lequel il faut sauvegarder
int erreur;
int i;
FILE *sortie;
printf("Entrez le nom du fichier: ");
scanf("%s",&nomFichier);
sortie=fopen(nomFichier,"at");
if (sortie == NULL)
{
printf("Un probleme est survenue lors de la tentative d'enregistrement de vos donnees dans le fichier %s\n",nomFichier);
}
else
{
fprintf(sortie,"%s \n %s \n %s \n %s \n %s \n %s \n %s \n %s \n", cpt.numeroCpte, cpt.typeCompte, cpt.nomClient, cpt.prenomClient, cpt.statutClient, cpt.categorieCompte, cpt.numeroClient, cpt.dateCreation);
}
fclose(sortie);
}
[/code]
Je voudrais effectuer une recherche à partir du nomClient, ou à partir du numeroCpte, dans le fichier, et afficher l'enregistrement correspondant:
[code]void RechercheCpte ()
{
char numeroCpte [11];
char nomClient [50];
char nomFichier [26];
int trouve1, trouve2=0;
FILE *sortie;
printf ("Entrez le nom du fichier: "); scanf ("%s", nomFichier);
sortie=fopen(nomFichier, "rt");
printf ("\n\n\nEntrez le nom du client, ou le numero de compte que vous cherchez");
printf ("\n\n\nNumero compte: "); scanf ("%s", numeroCpte);
printf ("\n\n\nNom client: "); scanf ("%s", nomClient);
while (!EOF) // tant que la fin du fichier n'est pas atteint
{
if (numeroCpte) // si un numero de compte a ete saisi
{
if (nomClient) // si un numero de compte et un nom de client ont ete saisi
{
trouve1=(strcmp(nomClient, cpt.nomClient));
}
else // si un numero de compte a ete saisi, mais pas de nom client
{
trouve2=(strcmp(numeroCpte, cpt.numeroCpte));
}
}
else // si aucun numero de compte n'a ete saisi
{
if (nomClient) // si aucun numero de compte n'a ete saisi, mais qu'un numero de client a ete saisie
{
trouve1=(strcmp(nomClient, cpt.nomClient));
}
}
} // fin du while
if (trouve1)
{
fscanf(sortie,"%s \n %s \n %s \n %s \n %s \n %s \n %s \n %s \n", &cpt.numeroCpte, &cpt.typeCompte, &cpt.nomClient, &cpt.prenomClient, &cpt.statutClient, &cpt.categorieCompte, &cpt.numeroClient, &cpt.dateCreation);
}
system ("pause");
}[/code]
Mon programme ne marche pas; il n'ya pas d'erreur lors de la compilation. Comment faut il effectuer la recherche dans le fichier en question? Merci
| | |
| |
| Publicité |
|
| | breizhbugs | Posté le 07/04/2006 à 16:15 | Astucien
3001 Messages
| Salut,
Dans ta fonction recherche, tu ouvres le fichier mais tu ne le lis pas !
Modifié par breizhbugs le 07/04/2006 16:17 | | | | | tonguim | Posté le 07/04/2006 à 16:22 | Petit astucien
116 Messages
| breizhbugs a écrit :tu ouvres le fichier mais tu ne le lis pas !
Comment puis je lire mon fichier s'il te plaît? | | | | | breizhbugs | Posté le 07/04/2006 à 16:55 | Astucien
3001 Messages
| | | | | | tonguim | Posté le 09/04/2006 à 12:47 | Petit astucien
116 Messages
| J'ai refait la fonction rechercher ainsi:
[code]void RechercheCpte ()
{
char numeroCpte [11];
char nomClient [50];
char nomFichier [26];
int trouve1, trouve2=0;
FILE *sortie;
printf ("Entrez le nom du fichier: "); scanf ("%s", nomFichier);
sortie=fopen(nomFichier, "rt");
printf ("\n\n\nEntrez le nom du client, ou le numero de compte que vous cherchez");
printf ("\n\n\nNumero compte: "); scanf ("%s", numeroCpte);
printf ("\n\n\nNom client: "); scanf ("%s", nomClient);
while (!EOF || !trouve1 || !trouve2) // tant que la fin du fichier n'est pas atteint
{
if (numeroCpte) // si un numero de compte a ete saisi
{
if (nomClient) // si un numero de compte et un nom de client ont ete saisi
{
trouve1=(strcmp(nomClient, cpt.nomClient));
}
else // si un numero de compte a ete saisi, mais pas de nom client
{
trouve2=(strcmp(numeroCpte, cpt.numeroCpte));
}
}
else // si aucun numero de compte n'a ete saisi
{
if (nomClient) // si aucun numero de compte n'a ete saisi, mais qu'un numero de client a ete saisie
{
trouve1=(strcmp(nomClient, cpt.nomClient));
}
} // fin du if
fscanf(sortie,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", &cpt.numeroCpte, &cpt.typeCompte, &cpt.nomClient, &cpt.prenomClient, &cpt.statutClient, &cpt.categorieCompte, &cpt.numeroClient, &cpt.dateCreation);
} // fin du while
fscanf(sortie,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", &cpt.numeroCpte, &cpt.typeCompte, &cpt.nomClient, &cpt.prenomClient, &cpt.statutClient, &cpt.categorieCompte, &cpt.numeroClient, &cpt.dateCreation);
system ("pause");
}[/code]
Il n'ya pas d'erreurs C, mais le programme ne marche toujours pas; lorsque j'entre le nom que je cherche, et le numero du compte, le programme se plante; j'appuie sur la touche "entrée", mais il ne sort pas du while apparemment.
J'ai vraiment besoin, car ça fait plusieurs jours déjà que je suis bloqué à ce niveau. | | | | | breizhbugs | Posté le 09/04/2006 à 13:08 | Astucien
3001 Messages
| while (!EOF ...
->EOF est une constante, tu ne teste pas la fin du fichier avec cette condition. | | | | | bebe en detresse | Posté le 17/04/2006 à 14:24 | Petit astucien
40 Messages
| une fonction qui permet la lecture/écriture :
ofstream .
exemple (ne pas oublier la librairie #include <fstream>)
ofstream fichier;
Fichier.open ("c:\\test.txt") /* l'adresse peut être contenue dans une variable */
Fichier >> "voici le texte qui sera dans le fichier ! \n";
Fichier.close () /* fermer le fichier */ | | | |
| | Haut de la page |
| | Inscrivez-vous ! |
- Posez vos questions
- Résolvez vos problèmes
- Aidez les autres
- Participez et créez vos discussions
- Dialoguez en privé avec d'autres membres
- Suivez vos sujets préférés
- Affichez les signatures des membres
|
|