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 :

difference entre deux chaines de caractères char*


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 16
    Points : 10
    Points
    10
    Par défaut difference entre deux chaines de caractères char*
    Bonjour a tous,
    je bute sur un petit problème. et je ne vois pas pourquoi j'ai deux longueurs de chaine entre "indice" et "Jvac" dans la fonction suivante:


    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
    // verification de dates de conges 
    void verif_conges() 
    {
     int i;
     int max;
     // tableau des conges
     String conges[]={"25/12","26/12","27/12","28/12","29/12","30/12","31/12","01/01"};
     max=(sizeof(conges))/7-1; 
     char jvac[5] = "";
     sprintf(jvac,"%s%u/%s%u",ddate,date,dmois,mois); // la date du jour pour ci-dessous
     // verification si c'est un jour de conge
     for(i=0 ; i<(max+1) 
     {
      char indice[6]; 
      conges[i].toCharArray(indice,6); // transtypage de conges[i] en char dans indice
      Serial.print("jvac=");
      Serial.println(jvac);
      Serial.print("indice=");
      Serial.println(indice);
      if(indice==jvac) // c'est un jour de conge
      {
       travail=false; 
       break;
      }
      else
      {
       travail=true;
      }
     } // fin du for i
     Serial.print("travail");
     Serial.println(travail);
     Serial.print("date_conges");
     Serial.println(date_conges);
    } // fin de verif_conges
    le nombre de caractères est juste pour "jvac" (5)
    le nombre de caractères (6) ne peut pas être réduit pour "indice", ou alors il y en a un spécial devant ? mais rien n'est visible sur la console.
    merci de m'aider a comprendre.

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    La boucle doit s'écrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(size_t i = 0; i < max; i++)
    {
        ...
    }
    Si le i n'est pas incrementé, elle est infinie.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2013
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Difference entre deux chaines de caractères char* complément
    Je repasse mon message tel qu'il est avec des commentaires dans le programme pour bien expliquer le sujet en question.
    Désolé pour le "i++" qui manquait je ne sais pas pourquoi certainement lors de la copie.

    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
    39
    40
    41
    42
    43
    44
    45
     
    // verification de dates de conges (travail=false)
    void verif_conges() 
    {
    	int i;
    	int max;
    	// table des conges entre le 1/10 et le 30/04 de l'annee suivante
    	String conges[]={"01/11","11/11","25/12","26/12","27/12","28/12","29/12","30/12","31/12","01/01"};
    	max=(sizeof(conges))/7;
    	// j'en conclu que chaque valeur occupe 7 caracteres le separateur n'est pas compris
    	char jvac[5] = "";
            char indice[5] = ""; 
      	sprintf(jvac,"%s%u/%s%u",ddate,date,dmois,mois); // la date du jour pour ci-dessous
     	// "jvac" ne prend que 5 caracteres exemple "27/12"
    	// verification si c'est un jour de conge
    	for(i=0 ; i<(max) ; i++) // pour i < a la fin de conges
    	{
     
    		conges[i].toCharArray(indice,(2,6); // transtypage de "conges[i]" en char [5]
    		// la date ex:"27/12"
    		Serial.print("jvac=");
    		Serial.println(jvac);
    		Serial.print("indice=");
    		Serial.println(indice);
    		// la comparaison ci dessous ne marche pas pourtant les 2 chaines sont egales sur la console
    		if(indice==jvac) // c'est un jour de conge
    		{
    			travail=false; 
    			Serial.println("c'est un jour de conge");
    			// extraire la date du conge pour le fun
    			date_conges=uint8_t(indice[0,2]); //python
    			mois_conges=uint8_t(indice[3,5]); //python pour essais de uint8_t si non int
    			break;
    		}
    		else
    		{
    			Serial.println("c'est un jour de travail");
    			travail=true;
    		}
    	} // fin du for i
    	Serial.print("travail");
    	Serial.println(travail);
    	Serial.print("date_conges");
    	Serial.println(date_conges);
    } // fin de verif_conges

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2008, 21h14
  2. requête where entre deux chaines de caractères
    Par soltani1 dans le forum Développement
    Réponses: 2
    Dernier message: 04/10/2007, 09h34
  3. requête where entre deux chaines de caractères
    Par soltani1 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/10/2007, 09h34
  4. espace entre deux chaines de caractères
    Par Pitou5464 dans le forum Access
    Réponses: 2
    Dernier message: 09/08/2006, 12h16
  5. Réponses: 7
    Dernier message: 03/02/2006, 13h50

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