[ C ] probleme affichage (agenda)

tjrs la?

on peut meme plus manger en paix :d

là je pige pas, essaye en déclarant taille_lue de type size_t, mais c’est bizarre la plupart des exemples que g vu marchent avec un int ou double [:austindangerpowers]

et si tu as réussi à lire ton fichier avant c’est qu’il arrive bien à remplir ta structure lors de la lecture

ici le man de fread:
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/fread.3.html

apperement il veut pas rentrer dans le if il passe direct a
“appuyer sur une touche pour retourner au menu”

t’as regardé le prog entier?

maintenant il me dit
taille lue = 1
taille lue = 1
taille lue = 0

Ce que je pige pas trop, c’est le contenu de ton fichier texte?

taille_lue=fread(&contact,sizeof(contact),1,fic_contacts);

tu sais que ça va lire sizeof(personne) (qui est normalement si je me gourre pas sizeof(contact)) mais que surtout, ça va lire 7*50 (la taille de chacun de tes tableaux de char) ?

Je sais pas comment tu code le fichier texte, mais honnêtement, prévois l’utilisation de fscanf plutôt que de le lire brutalement via fread de cette manière…

Je suis même étonné que tes printf fonctionnent.

c’est bon ca marche ! merci

en revanche Sans-Nom pourtais tu m’expliquer ta suggestion?
(syntaxe de fscanf)
fcanf = fread?

merci

c’etait où le probleme ?

turok > fscanf c’est la fonction réciproque de fprintf

ce que je pige pas c’est que tu fasse un fread sur une structure comme ça… et que ça marche en plus :o

je sais pas ensuite comment est formé ton fichier txt, mais bref.

jeanguy >> je sais pas pkoi mais a un moment il ma retourné
taille lue = 1
taille lue = 1
taille lue = 0

j’ai donc fait

if(taille_lue > 0.9 )
{
printf("\t\20Nom : %s\n", contact.nom);
printf("\t\20Prenom : %s\n", contact.prenom);
printf("\t\20Adresse : %s\n", contact.adresse);
printf("\t\20Ville : %s\n", contact.mas);
printf("\t\20Code Postal : %s\n", contact.codep);
printf("\t\20Telephone Fixe : %s\n", contact.tel);
printf("\n\n");
}

bon c’est pas tres commode mais bon ca marche :stuck_out_tongue:
(je debute :s)

bon maitenant que je suis lancé :wink:
j’ai donc ajouté une fonction trie (a ma facon je sais pas si on peu faire comme ca)

je veux donc que la personne rentre 1 caractere et qu’il en decoule tout les nom (par exemple ) qui commance par le caractere qu’il vient de renter…

j’ai donc fait

void trier()
{
char a[3];
fic_contacts = fopen(“c:\contacts.txt”,“r”);

 fflush(stdin);
 printf("entrer une lettre :");
 scanf("%s",a);
 printf("\n");
 
 while ( !feof(fic_contacts) )
 {
    fread(&contact,sizeof(contact),1,fic_contacts);
    
      if (memcmp(contact.nom,a,1) == 0 );
      {
      
             printf("\n");                                   
             
             printf("\t\20Nom : %s", contact.nom);
             printf("\n");
             printf("\t\20Prenom : %s", contact.prenom);
             printf("\n");
             printf("\t\20Adresse : %s", contact.adresse);
             printf("\n");
             printf("\t\20Ville : %s", contact.mas);
             printf("\n");
             printf("\t\20Code Postal : %s", contact.codep);
             printf("\n");
             printf("\t\20Telephone Fixe : %s", contact.tel);
             printf("\n\n");
             printf("appuyer sur une touche pour revenir au menu");
             getch();
             main();
             }
        if (memcmp(contact.nom,a,1) != 0 );
        {
          printf("vous navez aucun contact qui commence par %s",a);
          }
        
 } 

}

ma logique et bonne ou pas?

sans oublier un while qui fait boucle…

j’ai modifié ma fonction

fflush(stdin);
printf(“entrer la 1er lettre du nom :”);
scanf("%s",compare);
printf("\n");

 while ( !feof(fic_contacts) )
 {
    fread(&contact,sizeof(contact),1,fic_contacts);
    taille=memcmp(compare,contact.nom,1);
     printf("%f\n",taille); 
      
      if (taille == 0)
       {
         
        printf("\n");                                   
        printf("\t\20Nom : %s", contact.nom);
        printf("\n");
        printf("\t\20Prenom : %s", contact.prenom);
        printf("\n");
        printf("\t\20Adresse : %s", contact.adresse);
        printf("\n");
        printf("\t\20Ville : %s", contact.mas);
        printf("\n");
        printf("\t\20Code Postal : %s", contact.codep);
        printf("\n");
        printf("\t\20Telephone Fixe : %s", contact.tel);
        printf("\n\n");
        
        
        
        
        }
        
        }
        getch();
        
        
        
        if ( taille != 0 )
        
        {
        printf("vous navez aucun contact qui commence par %s\n",compare);
        printf("appuyer sur une touche pour revenir au menu");
        getch();
        main();
        }

en revanche meme probleme qu’avant il affiche 2 fois la derniere personne …

bah tu refais le meme test que précédement [:austindangerpowers]

(en passant ce test avec le coup du 1, c un peu du bricolage :d)

lol ouai grave mais bon :stuck_out_tongue:

par contre quelqun pourait m’aider pour faire une suppression des personne dans mon fichier?

car en faite les contacts que je rentre son stoké sur c:\contacts.txt et j’aimerais pourovi les supprimer

help

chaque personne et mise dans une structure
donc je pense faire comme pour une recherche sauf que au lieu de l’afficher je lui demande de la supprimer …

pour repondre a ta question du “tu fais comment precedement” le probleme c’est que cette fois si il me retourne pour 4 personne ( en content la personne reecrite 2 fois ) il me retpourne taille = 0 (4 fois) y compris le contact que je ne veux pas donc ca pose probleme