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 :

code n'entre pas dans les boucles if


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut code n'entre pas dans les boucles if
    Bonjour à tous,

    J'ai en entrée un fichier texte contenant plusieurs lignes de 24 caractères chacune.
    000101011101001000111010
    001011011100011101100001
    010010111101000010001111

    j'effectue une séparation de chaque ligne en 3 parties pour obtenir addr (4 premier caractères) cpt (8 caractères) et valeur (12 derniers carctères).

    ligne: 000101011101001000111010
    Adresse = 0001 à Cpt = 01011101 est de Valeur = 001000111010

    j'affiche ainsi de cette manière toutes les lignes de mon fichier.

    Ce que je voudrais faire maintenant c'est en fonction de l'adresse j'affiche quelques chose et également pouvoir convertir cpt en décimale (char to dec).

    par exemple pour mon premier cas
    ligne: 000101011101001000111010
    Adresse = 0001 à Cpt = 01011101 est de Valeur = 001000111010

    je voudrais afficher TARI à 93 est de Valeur = 001000111010.

    Malheureusement avec mon code je n'obtiens pas le résultat attendu et je ne trouve aucune fonction pour convertir le char en décimale.
    Si quelqu'un à une idée pour résoudre mon problème je lui en serais reconnaissant.
    voila mon code
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    #include <stdio.h>
    #include <stdlib.h>
    #define ENTREE "resultat_trie.txt"
     
    int main(void)
    {
      FILE *f_in;
      int i=0;
      char addr[5] = {0};
      char tari[5] = {0001};
      char rtcal[5] = {0010};
      char trcal[5] = {0100};
      char* paddr= addr;
      int cmp=0, cmp1=0, cmp2=0;
      char cpt [9] = {0};
      char val_reg [13] = {0};
     
    /************************ OUVERTURE FICHIER *********************************/
     
      if ((f_in = fopen(ENTREE,"r")) == NULL)
        {
          fprintf(stderr, "\nErreur: Impossible de lire le fichier %s\n",ENTREE);
          return(EXIT_FAILURE);
        }
     
    /***************** PARCOURS DU FICHIER LIGNE PAR LIGNE***********************/
     
       		if ( f_in != NULL )
       {
          char line [ 128 ]; /* or other suitable maximum line size */
     
          while ( fgets ( line, sizeof line, f_in ) != NULL ) /* read a line */
          {
             printf("Ligne : %s", line); /* write the line */
    		for(; i < 4; addr[i] = line[i], i++);
       	 	for(; i < 12; cpt[i-4] = line[i], i++);
       	 	for(; i < 24; val_reg[i-12] = line[i], i++);
    		cmp = strcmp (addr, tari);
    		cmp1 = strcmp (addr, trcal);
    		cmp2 = strcmp (addr, rtcal);
    	 if (cmp == 0)
    		{
    		printf("TARI à ");
      	        printf("Cpt = %s  ", cpt);
       	 	printf("est Valeur = %s\r\n", val_reg);
    	 	printf("\r\n");
    	 	i=0;
     
    		}		
    	if (cmp1 == 0)	
    		{printf("RTCAL à ");
      	        printf("Cpt = %s  ", cpt);
       	 	printf("est Valeur = %s\r\n", val_reg);
    	 	printf("\r\n");
    	 	i=0;
     
    		}
    	if (cmp2 == 0)
    		{printf("TRCAL à ");
      	        printf("Cpt = %s  ", cpt);
       	 	printf("est Valeur = %s\r\n", val_reg);
    	 	printf("\r\n");
    	 	i=0;
     
    		}
     
     
          }
          fclose ( f_in );
       }
       else
       {
          perror ( ENTREE ); /* why didn't the file open? */
       }
       return 0;
    }

  2. #2
    Membre très actif

    Homme Profil pro
    Collégien
    Inscrit en
    Juillet 2010
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Juillet 2010
    Messages : 582
    Par défaut
    Salut,


    Rajoute les options suivantes à ton compilateur : -Wextra -Wall -Werror.
    Tu verras ce qui ne va pas dans le code.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    ca me met
    Ligne de commande error D8021 : argument numérique non valide '/Werror'

    a savoir je suis sous windows 8 avec visual studio 2008

  4. #4
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut
    Bonjour,

    Tu as un petit soucis dans la déclaration de tes variables tari, rtcal et trcal.
    En effet, je pense que tu veux plutôt déclarer une chaîne de caractères de la sorte "0001", or avec les accolades, regarde ce que tu as dans tes tableaux...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    Citation Envoyé par alyma Voir le message
    Bonjour,

    Tu as un petit soucis dans la déclaration de tes variables tari, rtcal et trcal.
    En effet, je pense que tu veux plutôt déclarer une chaîne de caractères de la sorte "0001", or avec les accolades, regarde ce que tu as dans tes tableaux...
    tu as tout à fait raison ça marche maintenant le resultat est bien celui que j'attend.
    merci infiniment mais aurais tu une idée pour la conversion de char vers dec pour la partie cpt stp.

  6. #6
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut
    Ce lien devrait pouvoir t'aider : atoi

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    Merci beaucoup alyma je vais y jeter de suite un coup d'oeil

  8. #8
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut
    Par contre si ta chaîne représente un nombre en binaire, je pense que tu vas devoir te créer ta propre fonction de conversion

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    ma chaine represente bien un nombre binaire je voudrais par exemple convertir une chaîne "01001011" en "75".

  10. #10
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Avril 2013
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2013
    Messages : 77
    Par défaut
    Oui donc il faut que tu fasses un petit programme pour la conversion en utilisant simplement le principe du binaire:
    Tu sais que "0110" c'est 0*2^0 + 1*2^1 + 1*2^2 + 0*2^3
    Bon courage

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    Merci de ton aide alyma

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/06/2015, 18h53
  2. le premier pas dans les codes sources du kernel
    Par kaky951357 dans le forum Linux
    Réponses: 2
    Dernier message: 20/01/2015, 09h20
  3. ça rentre pas dans la boucle pendant l'exécution
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 9
    Dernier message: 15/01/2005, 15h41

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