Gestion de fichier et problème scanf (en C)
Meyfarth
-
le père -
le père -
Bonjour,
J'ai un petit souci de programmation avec scanf. J'ai un projet à faire et je dois faire une "base de données" de location de voitures. le but est de gérer les structures, les pointeurs et les passages en paramètres. J'aurais donc deux questions :
1) Est-ce que quelqu'un connaît un cours bien expliqué sur le net concernant la gestion des fichiers, car j'ai beau cherché, aucun n'est satisfaisant à mon goût. Je vous laisse imaginer qu'il serait mieux d'avoir toutes mes données dans des fichiers, ça m'évite 5 minutes de saisie à chaque fois que je désire faire un test.
2) J'ai un souci avec scanf : les espaces. Je sais qu'il sépare les chaînes de caractère avec le caractère d'espacement, mais en essayant quelques méthodes trouvées sur le net, rien ne fonctionne.
Voici un bout de code :
Code de la structure client :
Code pour ajouter un client :
Ici, mon problème est le suivant : quand je tape une adresse "normale" avec environ 4 espaces, il me saute 4 scanf. Exemple : 14 le clos des bananes => Je suppose qu'il met 14 dans adresse, "le" dans code postal, "clos" dans ville, "des" dans numéro de permis et "bananes" dans le champ Nom. J'ai donc recherché comment faire pour qu'il considère toute la chaîne comme une seule chaîne et non plusieurs. J'ai trouvé :
scanf("%[^\n]",tab_client[*nb_client].nom); => Ne fonctionne pas, quand ça arrive au champ nom, il ne demande rien et passe directement au suivant
fgets(tab_client[*nb_client].prenom,100,stdin); => Idem
Avez-vous une solution qui fonctionne ? Merci :)
J'ai un petit souci de programmation avec scanf. J'ai un projet à faire et je dois faire une "base de données" de location de voitures. le but est de gérer les structures, les pointeurs et les passages en paramètres. J'aurais donc deux questions :
1) Est-ce que quelqu'un connaît un cours bien expliqué sur le net concernant la gestion des fichiers, car j'ai beau cherché, aucun n'est satisfaisant à mon goût. Je vous laisse imaginer qu'il serait mieux d'avoir toutes mes données dans des fichiers, ça m'évite 5 minutes de saisie à chaque fois que je désire faire un test.
2) J'ai un souci avec scanf : les espaces. Je sais qu'il sépare les chaînes de caractère avec le caractère d'espacement, mais en essayant quelques méthodes trouvées sur le net, rien ne fonctionne.
Voici un bout de code :
Code de la structure client :
typedef struct client{
long int id_client;
char nom[MAX_NOM];
char prenom[MAX_PRENOM];
char CP[6];
char date_naissance[10];
char adresse[MAX_ADRESSE];
char ville[MAX_VILLE];
char n_permis[MAX_N_PERMIS];
}client;
Code pour ajouter un client :
void ajouter_client(client tab_client[],int *nb_client)
{
tab_client[*nb_client].id_client = id_nouveau_client(tab_client,*nb_client);
printf("\nNom : ");
scanf("%s", tab_client[*nb_client].nom);
printf("\nPrenom : ");
scanf("%s", tab_client[*nb_client].prenom);
printf("\nDate de naissance (sous forme jj/mm/aaaa) : ");
scanf("%s", tab_client[*nb_client].date_naissance);
printf("\nAdresse : ");
scanf("%s", tab_client[*nb_client].adresse);
printf("\nCode postal : ");
scanf("%s", tab_client[*nb_client].CP);
printf("\nVille : ");
scanf("%s", tab_client[*nb_client].ville);
printf("\nNum permis : ");
scanf("%s", tab_client[*nb_client].n_permis);
*nb_client = *nb_client + 1;
}
Ici, mon problème est le suivant : quand je tape une adresse "normale" avec environ 4 espaces, il me saute 4 scanf. Exemple : 14 le clos des bananes => Je suppose qu'il met 14 dans adresse, "le" dans code postal, "clos" dans ville, "des" dans numéro de permis et "bananes" dans le champ Nom. J'ai donc recherché comment faire pour qu'il considère toute la chaîne comme une seule chaîne et non plusieurs. J'ai trouvé :
scanf("%[^\n]",tab_client[*nb_client].nom); => Ne fonctionne pas, quand ça arrive au champ nom, il ne demande rien et passe directement au suivant
fgets(tab_client[*nb_client].prenom,100,stdin); => Idem
Avez-vous une solution qui fonctionne ? Merci :)
A voir également:
- Gestion de fichier et problème scanf (en C)
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
4 réponses
hello
Chapitre 6 La gestion des fichiers https://www.rocq.inria.fr/secret/Anne.Canteaut/COURS_C/chapitre6.html
Chapitre 6 La gestion des fichiers https://www.rocq.inria.fr/secret/Anne.Canteaut/COURS_C/chapitre6.html