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 :

Au sujet du '\0'


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut Au sujet du '\0'
    Bonjour,
    J'ai écrit une petite fonction qui permet de calculer un nombre donné dans une base donnée (principalement les bases 2 et 16).
    Je stocke le résultat dans un tableau. Jusque là pas de soucis. La difficulté a commencé lorsqu'il a fallu que je lise le tableau à l'envers pour récupérer mes chiffres dans l'ordre.
    Après plusieurs temps de cogitation j'ai écrit ceci (qui fonctionne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       i--; 
       while (i>=0) {
           printf ("le contenu de res[i] finit par %d\n", res[i]);
           i--;
           }
    J'ai ajouté avant d'entre dans la boucle un i-- car sans lui j'avais d'abord un résultat indéfini puis mes chiffres (). J'aurais aimé savoir si le C rajoutait automatiquement un caractère nul '\0' à la fin de toute chaîne ou tableau ? Cela me permettrait d'expliquer pourquoi il faut d'abord moincer i avant d'entrer dans ma boucle.
    Merci beaucoup

  2. #2
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Salut,

    Il faut savoir que les indices de tableaux commencent à 0 et non à 1. Ce qui fait que si un on déclare un tableau de 256 cases, on pourra accéder aux indices 0 jusqu'à 255 inclu. L'indice 256 n'existe pas

    Ensuite, en règle générale les fonctions standard n'ajoutent pas le '\0' à la fin de la chaîne de caractères traitée

  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
    J'aurais aimé savoir si le C rajoutait automatiquement un caractère nul '\0' à la fin de toute chaîne ou tableau ?
    Non. Il ne rajoute rien à la fin d'un tableau (de char ou d'autre chose).
    Par contre, les chaînes littérales (entre " ") sont effectivement terminées par un '\0' et bon nombre de fonctions dédiées aux chaines de caractères ajoutent ce caractère de fin (strcpy, strcat,...) ou supposent la présence de ce caractère de fin (strlen, strcmp,...).

    Apparemment, dans ton cas, il s'agit d'un tableau d'entier, et ça n'a rien d'une chaîne de caractères. Il n'y a donc pas de valeur de fin dans ton tableau (sauf si tu en a mis une à ta convenance). Probablement, i avant décrément devait correspondre à un élément juste derrière la dernière valeur du tableau (par exemple correspondant au nombre d'éléments du tableau)

  4. #4
    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
    Je rejoins mes confrères, le C n'ajoute rien automatiquement sauf dans les chaînes littérales. Dans ton cas peut-être que tu incrémentes i une fois de trop, par exemple si le remplissage du tableau se fait par le biais d'une boucle for et que le compteur est incrémenté sans savoir en avance si le remplissage du tableau doit continuer ou non... à voir !
    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 !

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

Discussions similaires

  1. [Débat] Expériences au sujet de .NET
    Par DevX dans le forum Débats sur le développement - Le Best Of
    Réponses: 46
    Dernier message: 25/05/2014, 11h16
  2. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16
  3. [DB2] Au sujet de...
    Par Eric Denné dans le forum DB2
    Réponses: 2
    Dernier message: 16/09/2002, 19h21
  4. Au sujet des constantes
    Par FranT dans le forum Langage
    Réponses: 8
    Dernier message: 09/08/2002, 11h03

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