[LANGAGE C] repertoire
18 messages
• Page 2 sur 2 • 1, 2
-

totocam - Co-administrateur

- Messages: 177
- Inscription: Jeu 31 Jan 2008 13:11
- Tchup`s - points: 80.00
- Localisation: AUSSONNE
Publicité
[color="DarkGreen"]Salut,
Bon, je vais m'en meler un peu aussi (mais au niveau temps, c'est pas mieux que totocam
)
Euh...déjà, avec interface graphique ou non?[/color]
Bon, je vais m'en meler un peu aussi (mais au niveau temps, c'est pas mieux que totocam
)
Euh...déjà, avec interface graphique ou non?[/color]
Ceux qui disent que c'est compliqué de se mettre à linux n'ont jamais essayé de comprendre une fille.
-

alton - Co-administrateur

- Messages: 664
- Inscription: Ven 1 Fév 2008 11:57
- Tchup`s - points: 180.00
Bon j'ai preparé un petit quelque chose,
[color="DarkGreen"]Voila, si t'as des questions, n'hésite pas[/color]
- Code: Tout sélectionner
#include <stdio.h>
#include<stdlib.h>
typedef char String[30];
typedef struct{ String nom ; int numero; } Contact; // on definit un type Contact contenant une chaine de caractères et un entier
typedef Contact TContact[150]; // on definit un type tableau de contacts
// fonction qui compare 2 chaines de caractères
int egale(String str1,String str2)
{
int i=0;
while(str1[i]!='\0' && str2[i]!='\0')
{
if (str1[i] != str2[i]) return 0;
i++;
}
if( str1[i] == '\0' && str2[i] == '\0') return 1;
return 1;
}
// fonction d'ajout d'un contact
void ajouterContact( String nomFichier )
{
Contact c;
// on demande le nom et le numero
printf("\n\nAjout d'un contact:\n");
printf("Nom du contact:");
scanf("%s",&c.nom);
printf("\nNumero :");
scanf("%d",&c.numero);
// on ouvre le fichier en ajout ("a")
FILE* fichier = fopen(nomFichier,"a");
// on ajoute un contact à la fin du fichier
fprintf(fichier,"%s , %d\n",c.nom,c.numero);
// on refereme le fichier
fclose( fichier);
}
// fonction affichant le repertoire
void afficherRepertoire( String nomFichier )
{
Contact c;
FILE * fichier = fopen( nomFichier , "r"); // on ouvre le fichier en lecture ("r")
while( !feof( fichier )) // tant que l'on atteint pas la fin du fichier
{
// on recupere chaque contact en parcourans le fichier
fscanf( fichier,"%s , %d\n",&c.nom,&c.numero);
// et on l'affiche
printf("%s : %d\n",c.nom,c.numero);
}
fclose( fichier );
}
// fonction qui recherche un contact et l'affiche
void rechercheContact( String nomFichier )
{
Contact c;
String nomCherche;
int trouve = 0;
FILE* fichier;
//on demande le nom a chercher
printf("Rechercher quel contact: ");
scanf("%s",&nomCherche);
fichier = fopen( nomFichier , "r");
while( !feof( fichier) && trouve == 0 )// tant qu'on a pas atteint la fin du fichier et que l'on a pas trouvé le contact
{
// on recupere chaque contact en parcourant le fichier
fscanf( fichier,"%s , %d\n",&c.nom,&c.numero);
if( egale( c.nom , nomCherche ) == 1 )
{ // si on trouve le contact,
printf("%s : %d\n",c.nom,c.numero);//on l'affiche
trouve = 1;//et on quitte la boucle
}
}// fin du while
fclose( fichier);
}
// fonction qui modifie un contact dans la base
void modifierContact( String nomFichier )
{
TContact tablC;
int i,nbC = 0;
String nomCherche;
int numeroModif;
FILE*fichier = fopen( nomFichier , "r"); // on ouvre le fichier en lecture("r")
while(!feof( fichier )) // on parcours le fichier jusqu'à la fin
{
fscanf(fichier,"%s , %d\n",&tablC[nbC].nom,&tablC[nbC].numero); // on recupere les valeurs dans un tableau
nbC++;
}
fclose( fichier );//on ferme le fichier
// on demande le nom du contact a modifier
printf("Nom du contact a modifier: ");
scanf("%s",&nomCherche);
// et le nouveau numero
printf("\nNouveau numero: ");
scanf("%d",&numeroModif);
// on ouvre le fichier en ecriture("w")
fichier = fopen( nomFichier , "w");
for( i=0 ; i<nbC ; i++) // on parcours le tableau
{
// si on trouve le contact,
if( egale( nomCherche, tablC[i].nom ) == 1) fprintf(fichier,"%s , %d\n",tablC[i].nom,numeroModif); //on enregistre le nouveau numero
else fprintf(fichier,"%s , %d\n",tablC[i].nom,tablC[i].numero); //sinon on ecrit le contact normalement
}
fclose( fichier );// on ferme le fichier
}
// fonction qui supprime un contact dans la base
void supprimerContact( String nomFichier )
{
TContact tablC;
int i,nbC = 0;
String nomCherche;
int numeroModif;
FILE*fichier = fopen( nomFichier , "r"); // on ouvre le fichier en lecture("r")
while(!feof( fichier )) // on parcours le fichier jusqu'à la fin
{
fscanf(fichier,"%s , %d\n",&tablC[nbC].nom,&tablC[nbC].numero); // on recupere les valeurs dans un tableau
nbC++;
}
fclose( fichier );//on ferme le fichier
// on demande le nom du contact a supprimer
printf("Nom du contact a supprimer: ");
scanf("%s",&nomCherche);
// on ouvre le fichier en ecriture("w")
fichier = fopen( nomFichier , "w");
for( i=0 ; i<nbC ; i++) // on parcours le tableau
{
// si le nom recherché est different du nom du contact
if( egale( nomCherche, tablC[i].nom ) == 0) fprintf(fichier,"%s , %d\n",tablC[i].nom,tablC[i].numero); //on ajoute le contact au fichier
// sinon, on ne fait rien
}
fclose( fichier );// on ferme le fichier
}
int main()
{
String nomFichier = "repertoire.txt"; //nom du fichier où l'on stock les contacts
int choix = 0;
while( choix != 6) //tant que l'utilisateur ne choisis pas de quitter
{
// on affiche le menu principal
printf("Repertoire\n");
printf("======================\n");
printf("1) Ajouter un contact\n");
printf("2) Afficher le repertoire\n");
printf("3) Rechercher un contact\n");
printf("4) Modifier un contact\n");
printf("5) Supprimer un contact\n");
printf("6) Quitter\n");
printf("-->");
scanf("%d",&choix);
// en fonction de la valeur choix,
switch( choix )
{
// on ajoute un contact
case 1:
ajouterContact( nomFichier );
break;
// ou on affiche le contenu du repertoire
case 2:
afficherRepertoire( nomFichier );
break;
// ou on recherche un contact
case 3:
rechercheContact( nomFichier );
break;
// ou on modifie un contact
case 4:
modifierContact( nomFichier );
break;
//ou on supprime un contact
case 5:
supprimerContact( nomFichier );
break;
// ou bien enfin, on quitte
case 6:
printf("bye :)\n");
break;
//parfois on dis que l'utilisateur ne sait pas lire
default:
printf("Action inconnue\n\n\n");
break;
}// fin du switch
}//fin du while
}// fin du main
[color="DarkGreen"]Voila, si t'as des questions, n'hésite pas[/color]

Ceux qui disent que c'est compliqué de se mettre à linux n'ont jamais essayé de comprendre une fille.
-

alton - Co-administrateur

- Messages: 664
- Inscription: Ven 1 Fév 2008 11:57
- Tchup`s - points: 180.00
-

totocam - Co-administrateur

- Messages: 177
- Inscription: Jeu 31 Jan 2008 13:11
- Tchup`s - points: 80.00
- Localisation: AUSSONNE
[color="DarkGreen"]stage en mairie ftw[/color] 

Ceux qui disent que c'est compliqué de se mettre à linux n'ont jamais essayé de comprendre une fille.
-

alton - Co-administrateur

- Messages: 664
- Inscription: Ven 1 Fév 2008 11:57
- Tchup`s - points: 180.00
KIKOu merci 
oui petite question
pourqoui tu initialise a ZERO ?

oui petite question
- Code: Tout sélectionner
int main()
{
String nomFichier = "repertoire.txt"; //nom du fichier où l'on stock les contacts
int choix = 0;
pourqoui tu initialise a ZERO ?
-

levoyageur - Tchupa - Trial

- Messages: 18
- Inscription: Lun 23 Fév 2009 13:20
- Tchup`s - points: 0.00
[color="DarkGreen"]Parce que choix va être testé juste après dans le while, du coup je préfère l'initialiser , mais tu peux mettre ce que tu veux à la place de zéro, à part six sinon on entre pas dans le while[/color]
Ceux qui disent que c'est compliqué de se mettre à linux n'ont jamais essayé de comprendre une fille.
-

alton - Co-administrateur

- Messages: 664
- Inscription: Ven 1 Fév 2008 11:57
- Tchup`s - points: 180.00
18 messages
• Page 2 sur 2 • 1, 2
Retourner vers Langage C et C++
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

News