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 :

probleme de la longueur d'une chaine de charactère


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 42
    Points
    42
    Par défaut probleme de la longueur d'une chaine de charactère
    BOnjour je dois développer une application en, mais j'ai un probleme avec le resultat d'une fonction que j'ai crée.
    C'est uen fonction qui va lire dans un fichier et qui me renvoie la valeur que je désire. Voici la fonction :

    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
    46
    47
    48
    char recherche(char *ar1, int ar3)
    {
      int i=0,j=0,k=0,l=0;
     
      FILE *INFILE;
     
      char NOM_PERS[255];
     
      do
        {
         INFILE = fopen("powerdale.xml", "r"); 
    	 if (!INFILE) 
    		   puts("erreur d ouverture");
        }
      while (!INFILE);
     
     
       while (!feof(INFILE))
        {
    	     fscanf(INFILE, "%s\n", NOM_PERS);
    		 if (l<ar3)
    		 {
    			/* for (i=0;i<strlen(ar1);i++)
    			 {
    				if (NOM_PERS[i]==ar1[i])
    				{
    					z++;
    				}
    			 }
    			 if (z==strlen(ar1))*/
    			 if (strncmp(ar1,NOM_PERS,strlen(ar1))==0)
    			 {
    				j=(strlen(NOM_PERS)-(strlen(ar1)+1));
    				k=strlen(ar1);
    				for (i=k;i<j;i++)
    				{
    					result[i-k]=NOM_PERS[i];
    				}
    				l++;
    			 }
    		 }
    	}
      /* Fermeture des fichiers */
      i = fclose(INFILE);
      if (i!=0)
    	puts("erreurs fermeture");
      return *result;
    }
    Mon probleme se siture au niveau du string result. Voici ce qu je recois quand j'envoie dans l'ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strcpy(temp1,"<etat>");
    	recherche(temp1,j);
    result vaut 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strcpy(temp1, "<consobase>");
    	recherche(temp1,1);
    result vaut 10000
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strcpy(temp1,"<etat>");
    	recherche(temp1,j);
    result vaut 00000

    Lors du premier passage et du 3 ème j'entre de la même facon mais il ne me renvoie pas la même chose. Cela est du au fait que le result n° vaut 10000 et il va seulement modifier le premier bit quand il passe pour la 3ème fois.
    Comment puis je faire pour qu'il ne me renvoi que 0 au 3ème passage. Il faut sans doute coupe le string apres le premier bit mais je vois pas comment faire

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wauant
    BOnjour je dois développer une application en, mais j'ai un probleme avec le resultat d'une fonction que j'ai crée.
    C'est une fonction qui va lire dans un fichier et qui me renvoie la valeur que je désire.
    Quel genre de valeur ?
    Voici la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char recherche(char *ar1, int ar3)
    char, je le sens mal. Soit c'est une chaine de caractères, il faut probablement un char*, soit c'est une valeur numérique et dans ce cas, [unsigned ]int ou long est plus approprié...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 42
    Points
    42
    Par défaut
    il doit me renvoyer une chaine de caractère mais ca ca merche bien. Le problème c'est qu il me renvoe au troisieme passage 00000 au lieu de 0 car la valeur de result au 2 eme passage vaut 10000 et qu ila changer que le premier bit. Et j'aimerais savoir comment couper ce string au premier bit

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wauant
    il doit me renvoyer une chaine de caractère mais ca ca merche bien.
    Ben non, ça ne fonctionne pas du tout... Je n'ose même pas donner çà à mon compilateur... Pas envie qu'il vomisse sur le tapis...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 42
    Points
    42
    Par défaut
    ben si tu peux m'éclairer alors car je vois pas pourquoi ca fonctionnerait pas

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wauant
    ben si tu peux m'éclairer alors car je vois pas pourquoi ca fonctionnerait pas
    J'ai déjà expliqué. La fonction retourne un char et strcpy() attend un char*. Comportement indéfini.
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 42
    Points
    42
    Par défaut
    ben pour moi je retourne un pointeur
    et puis la fonction strcpy agit avant l'appelle de la fonction je vois pas ce que la valeur retournée par la fonction incluence le strcpy

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wauant
    ben pour moi je retourne un pointeur
    Tu crois ? Quel est le type de result . Quel est le type de *result ? Quel est le type retourné par la fonction ?
    et puis la fonction strcpy agit avant l'appelle de la fonction je vois pas ce que la valeur retournée par la fonction incluence le strcpy
    Si tu ne vois pas ça, c'est grave.

    Reprends ton cours de C depuis le début, parce que tu n'es pas au point. C'est pas grave, mais il faut en être conscient et prendre les moyens de se remettre à niveau.
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/07/2006, 15h42
  2. Tester la longueur d'une chaine de caractères
    Par greg64 dans le forum IHM
    Réponses: 9
    Dernier message: 12/06/2006, 15h54
  3. longueur d'une chaine ...
    Par adrien954 dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2005, 12h56
  4. [langage] longueur d'une chaine lue ds un fichier
    Par perlaud dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2004, 22h36
  5. Réponses: 2
    Dernier message: 30/03/2004, 11h31

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