begin process at 2010 02 10 04:52:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

comparaison qui ne s'effectue pas


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comparaison qui ne s'effectue pas

samedi 20 janvier 2007 à 19:44:39 | comparaison qui ne s'effectue pas

chris5874

Bonjour,
je cherche a faire une comparaison entre un mot entre avec le clavier et des enregistrements dans un fichier. Malheureusement, malgre tous mes efforts, le programme ne me dit jamais quand les chaines de caracteres comparees sont egales.
Je vous remercie d'avance pour votre aide.

voici le code:
#include <stdio.h>
main(){
    FILE* fcategorie=NULL;
    FILE* fncategorie=NULL;
    char nom_categorie[50];
    char temp[75];
    char chaine[51];
    int rcmp;
    int ligne=0;
    fcategorie = fopen("categorie.txt", "a");
    fclose(fcategorie);
    printf("ajout de la categorie\n");
    puts("nom de la categorie a ajouter? (1 mot autorise)");
    scanf("%s",&nom_categorie);
    //check si la categorie existe deja
    fcategorie=fopen("categorie.txt","r");
    printf("lecture fichier\n");
    while (!feof(fcategorie))
    {
        fgets(chaine,50, fcategorie);
        printf("trouve ds le fichier :%s",chaine);
        printf("on compare : ");
        if ((strcmp(nom_categorie,chaine))==0 )
        {
                   printf("categorie trouvee");
        }
        else
        {
            printf("categorie differente");
        }
        printf("\n");
    }
    fclose(fcategorie);
    puts("fin");
}


samedi 20 janvier 2007 à 20:00:28 | Re : comparaison qui ne s'effectue pas

yann_lo_san

Salut,
scanf("%s",&nom_categorie); ne peut pas fonctionner, le pointeur sur la chaine c'est ou
nom_categorie ou
&nom_categorie[0]
et pas &nom_categorie.

plus simple pour lire :

while( fgets(chaine,50, fcategorie) != NULL )
{
   // ect...
}
 
samedi 20 janvier 2007 à 23:42:13 | Re : comparaison qui ne s'effectue pas

SAKingdom

Membre Club
Si la chaine entrée au clavier a des espaces, utilise gets. scanf coupera la chaine au premier espace.
Essayez d'éviter de lire un fichier caractère par caractère ou par petit bout à la fois. Il est beaucoup plus rapide de tout lire d'un coup et de naviguer dans le buffer avec des pointeurs.

C++ (@++)

dimanche 21 janvier 2007 à 08:53:15 | Re : comparaison qui ne s'effectue pas

chris5874

merci pour votre aide.
dans le source j'ai precise 1 mot autorise, (car j'utilise scanf) tout simplement car j'ai eu deja des problemes avec gets. En effet, l'instruction gets etait totalement zappee alors que le code etait ecrit proprement (je me pose d'ailleurs toujours la question d'ou est-ce que cela peut venir...)
Je vous remercie aussi de vos conseils, notamment sur les pointeurs et sur la maniere d'optimiser la lecture du fichier.



dimanche 21 janvier 2007 à 20:41:14 | Re : comparaison qui ne s'effectue pas

deck_bsd

Membre Club
Vide le buffer avant gets() avec fflush(stdin) si mes souvenir sont bons.

++
deck_bsd
___________________________________
[ [ Lien ]]


Cette discussion est classée dans : chaine, printf, comparaison, categorie, fcategorie


Répondre à ce message

Sujets en rapport avec ce message

comparaison de chaine de caracteres [ par romainbisson ] Bonjour,je voudrais comparer une chaine de caractere avec le caractere \n, si ils sont identitiques cela m'incremente un nombre.    char c;    char l liste chainée [ par skulls94 ] bonjour, je dois faire un  programme qui lit un fichier mot à mot et qui les stocke dans une liste chainée seulement si ils ne sont pas deja present.v Gestion de plusieurs ports RS232 [ par dissezfr ] Bonjour à tous d'abordJ'ai récupéré un code sur le site permettant de géré un port série, j'aimerai piloter 8 (voir +) ports série avec un seul ordina Comparaison de chaine [ par anek971 ] Bonjour a tous,ben enfaite je c ca parait bete mais j'ai un agneda a faire j'arrive a faire tt les fontcions sauf la comparaison de chaines,bah enfait syntax error at end of input [ par azerty53 ] Bonsoir à la communauté cppfrancej'ai un probleme sur mon code que je n'arrive pas du tout a résoudre et ca fait deja un certain temps que je suis des Chaine de caractere en C [ par YURIX ] J'ai un probléme avec une chaine de caracterechar choix1;printf("Test des axes L,T et V      : AX\n");printf("\nVotre choix :");     scanf("%s", choix Chaine de caractère ! [ par rems14 ] Bonjour, j'ai fais un petit programme qui ne marche pas. POuvais vous me dire ce qui ne marche pas. Je vous explique, je veux demander le prénom de qu HELP HELP EN C !!! [ par cali1983 ] Voilà j'ai un problème pour crypter un texte j'ai fais un programme il n'a aucune erreur si ce n'est qu'il veut pas faire ce que je dis.Il ne veut pas comparaison de chaine [ par erwan35 ] Bonjour à tous,Je voudrais comparer les 8 derniers caractères d'une chaine de caractères en c++(v1.5), si elle sont égales alors action1 sinon action2 Separer une chaine en sous chaine [ par firemax ] Bonjour Je me posais une question , j'aimerais diviser une chaine en sous chaine pour pouvoir ensuite les trier par longueur de chaine de caractere


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales