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 :

pb tab entier et tab caracteres


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut pb tab entier et tab caracteres
    bonjour a tous,

    voila mon probleme aujourd'hui est en fait d'echanger certains caracteres dans un tableau de caracteres a certaines positions stocke dans un tableau d'entier , sauf erreur elle echange uniquement le tab[0] alors que les echanges sont verifies.
    voici le 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
     
    int   *pos;
      int   *pos1;
      int   i;
      int   j;
     
      i = 0;
      j = 0;
      write(1, tab, size);
      my_putchar('\n');
      pos = search_point(size ,tab);
      pos1 = calcul(pos); // tab entier du style tab[0] = 0 tab[1]= 7 ......
      while (j < 12)
        {
          pos1[j] = i;
          my_putstr("ok");
          tab[i] = 'x';
          my_putchar(tab[i]);
          j++;
        }
      my_putchar('\n');
      my_putstr(tab);

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par aimad41
    voici le code:
    C'est possible d'avoir du code qui compile ?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut ok
    c'est tout simple par exemple ma chaines de caracteres c'est celle-ci

    "bonjour......bienv.e.nue ds..ts..l.es"
    il faut remplacer les points par des 'x'
    la fonction search_pos chercher les positions des ..
    la fonction calcul stocke les positions dans un tab entier.
    c'est tout ca tient dans un main

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Je ne comprends pas pourquoi tu utilises des fonctions supplémentaires.

    On pourrait avoir le code de tes fonctions calcul et et search_point pour y avoir un peu plus clair.

    Tu ne peux pas parcourir ta chaine en une seule fois et remplacer directement ?

    Pourquoi il y a un i<12 dans ton while ?
    Pourquoi tu utilises un while avec un j++ alors qu'un for serait plus approprié ? (même si c'est équivalent)

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut ok
    okvoila le code complet, quand aux for, je ne sait pas encore l'utiliser mais le principe est le meme.
    :
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    #include <stdlib.h>
    #include <fcntl.h>
     
    //fct qui retourne la position possible des 'x'
    int     *search_point(int size, char *aff)
    {
      int   *pos;
      int   i;
      int   p;
     
      i = 0;
      p = 0;
      pos = malloc(sizeof (int) * strlen(aff));
      if (aff == NULL)
        my_putstr("echec malloc\n");
      write(1, aff, size);
      my_putchar('\n');
      while (aff[i] != '\0')
        {
          if (aff[i] == '.')
            {
              pos[p] = i;
              p++;
            }
          i++;
        }
      p -= 1;
      while (p >= 0)
        {
          printf("Position possible de x trouver: %d\n", pos[p]);
          p--;
        }
      printf("retour effectue de search_point \n");
      return(pos);
    }
    //fct qui retourne le nbre de caracteres par ligne , ou si il n'y a que 1 ligne retourne 0
    int     search_line(char *aff)
    {
      int   pos;
      int   p;
     
      pos = 0;
      p = 0;
      while (aff[pos] != '\0')
        {
          if (aff[pos] == '\n')
            {
              p++;
            }
          pos++;
        }
      pos = 0;
      while (aff[pos] != '\n')
        {
          pos++;
        }
      printf("valeur totale de pos == %d\n", pos);
      if (p >= 1)
        return(pos + 1);
      else
        return(0);
    }
    //fct qui remplace les . par des 'x' aux positions stockes dans le tableau de search_point
    void    point(int size, char *tab)
    {
      int   *pos;
      int   i;
      int   j;
     
      i = 0;
      j = 0;
      write(1, tab, size);
      my_putchar('\n');
      pos = search_point(size ,tab);
      while (j < 12)
        {
          pos1[j] = i;
          my_putstr("ok");
          tab[i] = 'x';
          my_putchar(tab[i]);
          j++;
        }
      my_putchar('\n');
      my_putstr(tab);}
     
    int     main(int ac, char **av)
    {
      int   rd;
      char  *tab;
      tab = malloc(sizeof(*tab) *(200));
      rd = read(0, tab, 1000);
      if (rd == -1)
        my_putstr("Could not read properly the file\n");
      else
        point(rd, tab);
    }
    voila

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par aimad41
    okvoila le code complet,
    Tu as donc un problème de compilation, c'est ça ?
    Project : Forums
    Compiler : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `search_point':
    main.c:14: warning: implicit declaration of function `strlen'
    main.c:16: warning: implicit declaration of function `my_putstr'
    main.c:18: warning: implicit declaration of function `my_putchar'
    main.c:31: warning: implicit declaration of function `printf'
    main.c: In function `point':
    main.c:78: error: `pos1' undeclared (first use in this function)
    main.c:78: error: (Each undeclared identifier is reported only once
    main.c:78: error: for each function it appears in.)
    main.c: At top level:
    main.c:87: warning: unused parameter 'ac'
    main.c:87: warning: unused parameter 'av'
    Process terminated with status 1 (0 minutes, 3 seconds)
    3 errors, 6 warnings

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/05/2013, 09h11
  2. tab[] = "mail", echo tab[] me renvoit "1ail"
    Par eilijah dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2008, 11h20
  3. Probleme Insert entiers - chaine de caracteres
    Par keub51 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/02/2007, 19h13
  4. Réponses: 3
    Dernier message: 01/10/2006, 23h05
  5. OnKeyDown avec TAB et SHIFT TAB
    Par StarMusic dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/12/2003, 12h21

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