IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Utilisation de strcmp!


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Utilisation de strcmp!
    Salut tout le monde!
    J'ai un petit probleme avec la fonction strcmp qui n'est pas reconnu par mon compilateur! Je desirais faire un choix entre choisir -C ou -D
    Avec strcmp, j'avais donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include<stdio.h>
     
    void main(void)
    {
    	char choix[10];
     
    	printf("taper -C pour partie C ou -D pour partie D:");
    	scanf("%s",&choix);
     
    	if (strcmp(choix,"-C")==0)
    		printf("Partie C");
    	else if (strcmp(choix,"-D")==0)
    		printf("Partie D");
    	else
    		printf("Erreur");	
    }
    et maintenant j'essaie avec des if else mais je reste encore bloquer! Il m'indique toujours erreur!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include<stdio.h>
     
    void main(void)
    {
    	char choix[10]="-C,-D";
     
    	printf("taper -C pour partie C ou -D pour partie D:");
    	scanf("%s",&choix);
     
    	if (choix=="-C")
    		printf("Partie C");
    	else if (choix=="-D")
    		printf("Partie D");
    	else
    		printf("Erreur");	
    }
    Bref je serais ravi d'avoir un eclairement...
    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Salut

    Malheureusement, tu ne peu pas tester des chaines de caractères comme en Basic ! Donc voici le code de la fonction strcmp()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    /*- strcmp -----------------------------------------------------*/
    /* Compare la chaine str1 à str2.                               */
    /*     e : Chaines de caractères à comparer                     */
    /*     s : Ret. <0 si str1<str2, =0 si str1=str2, >0 str1>str2  */
    /*--------------------------------------------------------------*/
    int strcmp(const char *str1, const char *str2)
      {
      do
        {
        if(*str1-*str2) return (*str1-*str2) ;
        }
      while(*(str1++) && *(str2++)) ;
      return 0 ;
      }
     
    /*- strncmp ----------------------------------------------------*/
    /* Compare la chaine str1 à str2 jusqu'à maxlen caractères.     */
    /*     e : Chaines de caractères à comparer                     */
    /*       : Max de caractères à comparer                         */
    /*     s : Ret. <0 si str1<str2, =0 si str1=str2, >0 str1>str2  */
    /*--------------------------------------------------------------*/
    int strncmp(const char *str1, const char *str2, unsigned char maxlen)
      {
      do
        {
        if(*str1-*str2) return (*str1-*str2) ;
        }
      while(*(str1++) && *(str2++) && --maxlen) ;
      return 0 ;
      }
    J'en ai profité pour te mettre la fonction strncmp(), qui test jusqu'à n caractères.

    Bye...
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Dans le cas present tu peux simplement tester si
    puis qu'il n'y a qu'une lettre qui fait la difference (le premiere lettre n'etant pas discriminante....

    par contre c'est quoi ton compilo pour qu'il n'y ait pas strcmp ?

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci pour tes informations mais j'ai du mal même a appliquer tes conseils!
    Je n'arrive tjs pas a reussir a mettre en forme le code pour que ce fonctionne!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include<stdio.h>
    #include <stdio.h>
    #include <conio.h>		
    #include <string.h>		
    #include <ctype.h>		
     
     
     
    int strcmp(const char *str1, const char *str2) //Declaration de la fonction
    {                                                               //strcmp
    	do 
    	{ 
    		if(*str1-*str2) return (*str1-*str2) ; 
    	} 
    	while(*(str1++) && *(str2++)) ; 
     
    } 
     
     
    void main(void)
    {                            //Declaration des variables
     
    	char *choix;        //pointeur vers le caractere choix
    	const char *choix1="-C"; //pointeur vers choix 1 et choix 2
    	const char *choix2="-D";
     
     
    	printf("taper -C pour partie C ou -D pour partie D:");
    	gets(*choix);   //lecture vers le pointeur choix
     
    	if strcmp(*choix,*choix1)          //comparaison avec strcmp
    		printf("Partie C");
                    if (*choix,*choix2)
    		printf("Partie D");
    	else
    		printf("Erreur");									
     
    }
    Bref je vous remercie d'avance pour vos reponses...

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut strcmp
    J'utilise visual C++.
    Je vais essayer avec C==0! Merci pour l'info!

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Enfin avec choix[1]==C...

  7. #7
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Essaye comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    char choice[5] ;        /* Chaine de réponse */
     
    int strcmp(const char *str1, const char *str2)
      {
      do 
         { 
          if(*str1-*str2) return (*str1-*str2) ; 
         } 
       while(*(str1++) && *(str2++)) ; 
      } 
     
    void main(void)
      {
      printf("Taper -C ou -D pour respectivement la partie 1 ou 2 : ") ;
      scanf("%s", &choice) ;
      if(!strcmp(choice,"-C"))
        {
        printf("Vous êtes dans la partie #1\n") ;
        }
      else if(!strcmp(choice,"-D"))
        {
        printf("Vous êtes dans la partie #2\n") ;
        }
      else
        {
        printf("Arrêter de taper des conneries ;o)\n") ;
        }
      }
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 68
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    Si vous ajoutez au debut

    strcmp sera reconnu

    Cordialement

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut voilà...
    Je remercie tt le monde pour l'aide que vous m'avez apporté!
    J'ai testé quand même longtemps mais c'est bon! Merci aux printfs!
    Voilà ce qu'il fallait taper:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    #include<stdio.h>
    #include <stdio.h>
    #include <conio.h>		
    #include <string.h>		
    #include <ctype.h>		
     
     
     
    void main(void) 
    {
    	char choix[]="-C,-D"; 
     
       printf("taper -C pour partie C ou -D pour partie D:"); 
       gets(choix); 
     
    	printf("choix:%s\n",choix);
     
       if (choix[1]=='C') 
         printf("Partie C\n"); 
       else if (choix[1]=='D') 
          printf("Partie D\n"); 
       else 	
          printf("Erreur\n");    
     
    }
    Merci a tous encore une fois! A bientot...

  10. #10
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Oui j'avais aussi oublié string.h!
    Peut etre bien que ca marche aussi avec strcmp mais j'ai pas reussi avec...Si vous trouvez la solution je suis preneur...@ bientot

  11. #11
    Candidat au Club
    Inscrit en
    Octobre 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Remerciements
    Merci Elijha pour la soluce avec strcmp!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment utiliser strcmp ?
    Par EnoraG dans le forum MATLAB
    Réponses: 2
    Dernier message: 31/05/2012, 16h20
  2. caractère générique utilisable dans strcmp
    Par barthelv dans le forum C
    Réponses: 9
    Dernier message: 01/08/2003, 16h54
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo