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 :

Chaîne de caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut Chaîne de caractères
    Salut ! Avant de vous exposer le problème, je vais vous montrer mon code source :
    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
    char C[N],*adr;
        int l,i;
        adr=C;
        printf("Ecris qqch\n");
        scanf("%s",C);
     
        *adr=C[N];
        l=strlen(adr);
        printf("%d\n",l);
     
        for(i=1;i<l;i++)
        {
            printf("%c",C[i]);
        }
     
        return(1);

    Le problème c'est que je demande à l'utilisateur de taper une chaîne de caractères et après j'affiche ce qu'il a marqué caractère par caractère.
    Le problème c'est qu'il n'affiche jamais le premier caractère, par exemple quand je tape "salut" il m'affiche "alut". Quelqu'un peut-il me dire d'où vient le problème?

    Merci.

    Raptor

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut


    0
    Je n'ai pas testé ton code... à ce sujet : mais :

    Cette ligne est fausse
    il faut écrire
    Le but étant de fournir à ton pointeur le début du tableau. Venons en à la boucle
    Les index en C commencent par 0 et non par 1, la raison pour laquelle tu n'avais jamais le premier caractère de ta chaîne, la correction est donc
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le problème c'est qu'il n'affiche jamais le premier caractère,
    L'indice des éléments d'un tableau commence à 0, pas à 1

    Attention, ceci contient une erreur :
    C[N] est hors du tableau : les indices commençant à 0, le plus grand indice légal d'un tableau de N éléments est N-1.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut
    Mais pourtant j'ai bien mis plus haut adr=C et même quand je débute à 0 il me l'affiche pas.

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Raptor77 Voir le message
    Mais pourtant j'ai bien mis plus haut adr=C et même quand je débute à 0 il me l'affiche pas.
    Ceci 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
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
     
    #define N 50
     
     
    int main (void)
    {
       char C[N], *adr;
       int l, i;
     
     
       adr = C;
       printf ("Ecris qqch\n");
       scanf ("%s", C);
     
       l = strlen (adr);
     
     
       printf ("Taille de la chaine : %d\n", l);
     
       for(i = 0; i < l; i++)
       {
          printf("%c", C[i]);
       }
     
     
       return EXIT_SUCCESS;
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut
    D'accord en fait je vois où était mon erreur !
    Merci !

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Cela dit, il y a plus simple pour ton 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
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
     
    #define N 50
     
     
    int main (void)
    {
       char C[N];
     
     
       printf ("Ecris qqch\n");
     
       if (fgets (C, N, stdin) != NULL)
       {
          printf ("Tu as ecris : %s", C);
       }
     
     
       return EXIT_SUCCESS;
    }
    Au plaisir
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  3. Chaînes de caractères
    Par Zazeglu dans le forum C
    Réponses: 3
    Dernier message: 28/08/2003, 16h20
  4. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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